home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / c / gcc-2.6 / gcc-2.6.3-i2.6.3.diff
Encoding:
Text File  |  1995-02-22  |  1.5 MB  |  44,629 lines

Text Truncated. Only the first 1MB is shown below. Download the file for the complete contents.
  1. diff -r -u -H -N gcc-2.6.3/Makefile.in gcc-i2.6.3/Makefile.in
  2. --- gcc-2.6.3/Makefile.in    Mon Nov 28 18:54:06 1994
  3. +++ gcc-i2.6.3/Makefile.in    Tue Dec 20 16:04:58 1994
  4. @@ -46,7 +46,7 @@
  5.  # to the stage2 and stage3 compilations
  6.  # XCFLAGS is used for most compilations but not when using the GCC just built.
  7.  XCFLAGS =
  8. -CFLAGS = -g
  9. +CFLAGS = -O2
  10.  BOOT_CFLAGS = -O $(CFLAGS)
  11.  # These exists to be overridden by the x-* and t-* files, respectively.
  12.  X_CFLAGS =
  13. diff -r -u -H -N gcc-2.6.3/c-decl.c gcc-i2.6.3/c-decl.c
  14. --- gcc-2.6.3/c-decl.c    Fri Nov 11 17:52:25 1994
  15. +++ gcc-i2.6.3/c-decl.c    Wed Feb 15 22:46:38 1995
  16. @@ -2122,6 +2122,8 @@
  17.                        ? 0 : DECL_INITIAL (oldglobal));
  18.                DECL_SAVED_INSNS (x) = DECL_SAVED_INSNS (oldglobal);
  19.                DECL_FRAME_SIZE (x) = DECL_FRAME_SIZE (oldglobal);
  20. +              /* intel1 */
  21. +              DECL_FRAME_SIZE (x) = DECL_FRAME_SIZE (oldglobal);
  22.                DECL_ARGUMENTS (x) = DECL_ARGUMENTS (oldglobal);
  23.                DECL_RESULT (x) = DECL_RESULT (oldglobal);
  24.                TREE_ASM_WRITTEN (x) = TREE_ASM_WRITTEN (oldglobal);
  25. diff -r -u -H -N gcc-2.6.3/c-parse.c gcc-i2.6.3/c-parse.c
  26. --- gcc-2.6.3/c-parse.c    Sat Aug 27 13:51:56 1994
  27. +++ gcc-i2.6.3/c-parse.c    Tue Nov  8 15:47:57 1994
  28. @@ -1290,23 +1290,8 @@
  29.  #endif
  30.  
  31.  #line 184 "/usr/local/lib/bison.simple"
  32. -
  33. -/* The user can define YYPARSE_PARAM as the name of an argument to be passed
  34. -   into yyparse.  The argument should have type void *.
  35. -   It should actually point to an object.
  36. -   Grammar actions can access the variable by casting it
  37. -   to the proper pointer type.  */
  38. -
  39. -#ifdef YYPARSE_PARAM
  40. -#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
  41. -#else
  42. -#define YYPARSE_PARAM
  43. -#define YYPARSE_PARAM_DECL
  44. -#endif
  45. -
  46.  int
  47. -yyparse(YYPARSE_PARAM)
  48. -     YYPARSE_PARAM_DECL
  49. +yyparse()
  50.  {
  51.    register int yystate;
  52.    register int yyn;
  53. @@ -3335,7 +3320,7 @@
  54.      break;}
  55.  }
  56.     /* the action file gets copied in in place of this dollarsign */
  57. -#line 480 "/usr/local/lib/bison.simple"
  58. +#line 465 "/usr/local/lib/bison.simple"
  59.  
  60.    yyvsp -= yylen;
  61.    yyssp -= yylen;
  62. diff -r -u -H -N gcc-2.6.3/cexp.c gcc-i2.6.3/cexp.c
  63. --- gcc-2.6.3/cexp.c    Fri Sep 23 14:10:27 1994
  64. +++ gcc-i2.6.3/cexp.c    Tue Nov  8 15:47:37 1994
  65. @@ -521,23 +521,8 @@
  66.  #endif
  67.  
  68.  #line 184 "/usr/local/lib/bison.simple"
  69. -
  70. -/* The user can define YYPARSE_PARAM as the name of an argument to be passed
  71. -   into yyparse.  The argument should have type void *.
  72. -   It should actually point to an object.
  73. -   Grammar actions can access the variable by casting it
  74. -   to the proper pointer type.  */
  75. -
  76. -#ifdef YYPARSE_PARAM
  77. -#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
  78. -#else
  79. -#define YYPARSE_PARAM
  80. -#define YYPARSE_PARAM_DECL
  81. -#endif
  82. -
  83.  int
  84. -yyparse(YYPARSE_PARAM)
  85. -     YYPARSE_PARAM_DECL
  86. +yyparse()
  87.  {
  88.    register int yystate;
  89.    register int yyn;
  90. @@ -1061,7 +1046,7 @@
  91.      break;}
  92.  }
  93.     /* the action file gets copied in in place of this dollarsign */
  94. -#line 480 "/usr/local/lib/bison.simple"
  95. +#line 465 "/usr/local/lib/bison.simple"
  96.  
  97.    yyvsp -= yylen;
  98.    yyssp -= yylen;
  99. diff -r -u -H -N gcc-2.6.3/combine.c gcc-i2.6.3/combine.c
  100. --- gcc-2.6.3/combine.c    Wed Nov 30 19:13:30 1994
  101. +++ gcc-i2.6.3/combine.c    Wed Feb 15 23:01:12 1995
  102. @@ -96,6 +96,10 @@
  103.  #include "recog.h"
  104.  #include "real.h"
  105.  
  106. +/* intel1 */
  107. +static int in_recombine=0;
  108. +extern FILE *combine_dump_file;
  109. +
  110.  /* It is not safe to use ordinary gen_lowpart in combine.
  111.     Use gen_lowpart_for_combine instead.  See comments there.  */
  112.  #define gen_lowpart dont_use_gen_lowpart_you_dummy
  113. @@ -377,6 +381,29 @@
  114.  
  115.  static int n_occurrences;
  116.  
  117. +/* intel2 - begin */
  118. +
  119. +#define INSN_SETS_REGNO(INSN, REGNO) dead_or_set_regno_p (INSN, REGNO)
  120. +#define INSN_USES_REGNO(INSN, REGNO) refers_to_regno_p (REGNO, \
  121. +                            REGNO + 1, \
  122. +                                                        PATTERN (INSN), \
  123. +                                                        0)
  124. +
  125. +/* if this flag is set do not recombine unscheded riscified insns, which their
  126. + * original insn's destination was a memory.
  127. + */
  128. +extern int flag_risc_mem_dest;
  129. +
  130. +/* if this flag is set try to riscify stores of CONST_INTs */
  131. +extern int flag_risc_const;
  132. +
  133. +void update_free_regs (rtx);
  134. +static void update_regno_holds_mem (rtx insn, rtx pat);
  135. +static int remove_redundant_store (rtx mem, int block);
  136. +static void update_entries (rtx reg);
  137. +
  138. +/* intel2 - end */
  139. +
  140.  static void init_reg_last_arrays    PROTO(());
  141.  static void setup_incoming_promotions   PROTO(());
  142.  static void set_nonzero_bits_and_sign_copies  PROTO((rtx, rtx));
  143. @@ -436,6 +463,14 @@
  144.  static void distribute_notes    PROTO((rtx, rtx, rtx, rtx, rtx, rtx));
  145.  static void distribute_links    PROTO((rtx));
  146.  static void mark_used_regs_combine PROTO((rtx));
  147. +/* intel2 */
  148. +#if 0
  149. +static void dump_free_registers ();
  150. +#endif
  151. +int find_free_reg();
  152. +static int find_regno_holds_mem (rtx, enum machine_mode);
  153. +/* intel1 */
  154. +static int try_backwards_replace ();
  155.  
  156.  /* Main entry point for combiner.  F is the first insn of the function.
  157.     NREGS is the first unused pseudo-reg number.  */
  158. @@ -867,6 +902,9 @@
  159.  
  160.    /* Don't eliminate a store in the stack pointer.  */
  161.    if (dest == stack_pointer_rtx
  162. +      /* intel1 
  163. +      || (in_recombine && GET_CODE (dest) == REG
  164. +          && reg_used_between_p (dest, insn, i3)) */
  165.        /* If we couldn't eliminate a field assignment, we can't combine.  */
  166.        || GET_CODE (dest) == ZERO_EXTRACT || GET_CODE (dest) == STRICT_LOW_PART
  167.        /* Don't combine with an insn that sets a register to itself if it has
  168. @@ -1045,6 +1083,8 @@
  169.     On machines where SMALL_REGISTER_CLASSES is defined, we don't combine
  170.     if the destination of a SET is a hard register that isn't a user
  171.     variable.
  172. +   intel2 - This is true unless we are in recombine (indicated by
  173. +   in_recombine)
  174.  
  175.     Before doing the above check, we first try to expand a field assignment
  176.     into a set of logical operations.
  177. @@ -1114,12 +1154,26 @@
  178.           CALL operation.  */
  179.        || (GET_CODE (inner_dest) == REG
  180.            && REGNO (inner_dest) < FIRST_PSEUDO_REGISTER
  181. +          /* intel2 - begin */
  182. +          /* if we are in the recombine phase, we should not eliminate the
  183. +           * possibility for combine if the destination is a hard register.
  184. +           */
  185. +          && (!in_recombine)
  186. +          /* intel2 - end */
  187.            && (! HARD_REGNO_MODE_OK (REGNO (inner_dest),
  188.                      GET_MODE (inner_dest))
  189.  #ifdef SMALL_REGISTER_CLASSES
  190.           || (GET_CODE (src) != CALL && ! REG_USERVAR_P (inner_dest))
  191.  #endif
  192.            ))
  193. +
  194. +      /* intel2 - begin */
  195. +      /* if we want to leave mem-dest riscified instructions untouched... */
  196. +      || (in_recombine
  197. +        && flag_risc_mem_dest
  198. +        && GET_CODE (inner_dest) == MEM)
  199. +      /* intel2 - end */
  200. +
  201.        || (i1_not_in_src && reg_overlap_mentioned_p (i1dest, src)))
  202.      return 0;
  203.  
  204. @@ -1372,6 +1426,25 @@
  205.        return 0;
  206.      }
  207.  
  208. +  /* intel1 */
  209. +  if (in_recombine)
  210. +    {
  211. +      if (i1 && GET_CODE (PATTERN (i1)) == SET 
  212. +          && GET_CODE (SET_DEST (PATTERN (i1))) == REG
  213. +          && reg_used_between_p (SET_DEST (PATTERN (i1)), i1, i2))
  214. +        {
  215. +          undo_all ();
  216. +          return 0;
  217. +        }
  218. +      if (i2 && GET_CODE (PATTERN (i2)) == SET 
  219. +          && GET_CODE (SET_DEST (PATTERN (i2))) == REG
  220. +          && reg_used_between_p (SET_DEST (PATTERN (i2)), i2, i3))
  221. +        {
  222. +          undo_all ();
  223. +          return 0;
  224. +        }
  225. +    }
  226. +
  227.    /* Record whether I2DEST is used in I2SRC and similarly for the other
  228.       cases.  Knowing this will help in register status updating below.  */
  229.    i2dest_in_i2src = reg_overlap_mentioned_p (i2dest, i2src);
  230. @@ -1993,6 +2066,46 @@
  231.      insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);
  232.      }
  233.  
  234. +   /* intel1 , maybe we can rearrange memory so it is recognized */
  235. +#ifdef REWRITE_ADDRESS
  236. +   if (insn_code_number==-1 && GET_CODE(newpat)==SET && i1==NULL)
  237. +     {
  238. +       rtx copy_of_newpat,try_to_make_good(); /* see loop.c */
  239. +       rtx new_src_copy,new_dest_copy;
  240. +       int dummy;
  241. +       char * storage;
  242. +       storage = (char *) oballoc(0);
  243. +       copy_of_newpat = copy_rtx (newpat);
  244. +       new_src_copy = SET_SRC (copy_of_newpat);
  245. +       try_to_make_good (SET_SRC (copy_of_newpat));
  246. +       try_to_make_good (SET_DEST (copy_of_newpat));
  247. +       if (recog (copy_of_newpat, i3, &dummy) != -1)
  248. +         {
  249. +           newpat = copy_of_newpat;
  250. +           insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);
  251. +         }
  252. +       else if (GET_CODE (new_src_copy) != MEM)
  253. +         {
  254. +           new_src_copy = gen_rtx (MEM, GET_MODE( new_src_copy), new_src_copy);
  255. +           try_to_make_good (new_src_copy);
  256. +           SET_SRC (copy_of_newpat) = XEXP (new_src_copy,0);
  257. +           if (recog (copy_of_newpat,i3,&dummy) != -1)
  258. +             {
  259. +               newpat = copy_of_newpat;
  260. +               insn_code_number = recog_for_combine (&newpat,i3,&new_i3_notes);
  261. +             }
  262. +           else
  263. +             {
  264. +               obfree (storage);
  265. +             }
  266. +         }
  267. +       else
  268. +         {
  269. +           obfree (storage);
  270. +         }
  271. +     }
  272. +#endif /* REWRITE_ADDRESS */
  273. +
  274.    /* If it still isn't recognized, fail and change things back the way they
  275.       were.  */
  276.    if ((insn_code_number < 0
  277. @@ -2003,6 +2116,30 @@
  278.        return 0;
  279.      }
  280.  
  281. + /* intel2 - begin */
  282. +#ifdef REGISTER_CONSTRAINTS
  283. +   /* check if the combined insn is a legal one */
  284. +   if (in_recombine)
  285. +     {
  286. +       register rtx temp_pat = PATTERN (i3);
  287. +       register int temp_code_number = INSN_CODE (i3);
  288. +
  289. +       /* change it only for the following check */
  290. +       PATTERN (i3) = newpat;
  291. +       INSN_CODE (i3) = insn_code_number;
  292. +       insn_extract (i3);
  293. +       /* restore the data */
  294. +       PATTERN (i3) = temp_pat;
  295. +       INSN_CODE (i3) = temp_code_number;
  296. +       if (! constrain_operands (insn_code_number, 1))
  297. +         {
  298. +           undo_all();
  299. +           return 0;
  300. +         }
  301. +     }
  302. +#endif
  303. + /* intel2 - end */
  304. +
  305.    /* If we had to change another insn, make sure it is valid also.  */
  306.    if (undobuf.other_insn)
  307.      {
  308. @@ -4197,6 +4334,14 @@
  309.        int other_changed = 0;
  310.        enum machine_mode compare_mode = GET_MODE (dest);
  311.  
  312. +    /* intel1 */
  313. +#ifdef HAVE_cc0
  314. +    if(SET_DEST (x) == cc0_rtx && compare_mode==VOIDmode)
  315. +      {
  316. +        compare_mode = GET_MODE (SET_SRC (x));
  317. +      }
  318. +#endif
  319. +
  320.        if (GET_CODE (src) == COMPARE)
  321.      op0 = XEXP (src, 0), op1 = XEXP (src, 1);
  322.        else
  323. @@ -9712,7 +9857,13 @@
  324.    for (link = REG_NOTES (insn); link; link = XEXP (link, 1))
  325.      {
  326.        if (REG_NOTE_KIND (link) == REG_DEAD
  327. -      && GET_CODE (XEXP (link, 0)) == REG)
  328. +          /* intel2 - begin */
  329. +          /* if in_recombine we might encounter a REG_DEAD note of memory!
  330. +           */
  331. +          && (! in_recombine
  332. +              || GET_CODE (XEXP (link, 0)) == REG)
  333. +          /* intel2 - end */
  334. +           )
  335.      {
  336.        int regno = REGNO (XEXP (link, 0));
  337.        int endregno
  338. @@ -10544,13 +10695,26 @@
  339.                }
  340.              else
  341.                {
  342. +              /* intel1 making this into reg_unused causes
  343. +                 bug in scheduler since sched will see this
  344. +                 as a reg_dead */
  345. +#if 0
  346.              PUT_REG_NOTE_KIND (note, REG_UNUSED);
  347. +#endif
  348.  
  349. +#if 0
  350.              /*  If there isn't already a REG_UNUSED note, put one
  351.                  here.  */
  352.              if (! find_regno_note (tem, REG_UNUSED,
  353.                             REGNO (XEXP (note, 0))))
  354.                place = tem;
  355. +#else
  356. +          /*  If there isn't already a REG_DEAD note, put one
  357. +              here.  */
  358. +          if (! find_regno_note (tem, REG_DEAD,
  359. +                         REGNO (XEXP (note, 0))))
  360. +            place = tem;
  361. +#endif
  362.              break;
  363.                }
  364.            }
  365. @@ -10817,4 +10981,2580 @@
  366.      (file,
  367.       "\n;; Combiner totals: %d attempts, %d substitutions (%d requiring new space),\n;; %d successes.\n",
  368.       total_attempts, total_merges, total_extras, total_successes);
  369. +}
  370. +
  371. +/* intel1 */
  372. +/* intel1 - those split insns that remained consecutive should now
  373. +           be combined 
  374. +*/
  375. +void
  376. +combine_unscheded (f, nregs)
  377. +     rtx f;
  378. +     int nregs;
  379. +{
  380. +  register rtx insn, next, prev;
  381. +  register int i;
  382. +  register rtx links, nextlinks, note;
  383. +
  384. +  in_recombine = 1;
  385. +  combine_attempts = 0;
  386. +  combine_merges = 0;
  387. +  combine_extras = 0;
  388. +  combine_successes = 0;
  389. +
  390. +  combine_max_regno = nregs;
  391. +
  392. +  reg_last_death = (rtx *) alloca (nregs * sizeof (rtx));
  393. +  reg_last_set = (rtx *) alloca (nregs * sizeof (rtx));
  394. +  reg_last_set_value = (rtx *) alloca (nregs * sizeof (rtx));
  395. +  reg_last_set_table_tick = (int *) alloca (nregs * sizeof (int));
  396. +  reg_last_set_label = (int *) alloca (nregs * sizeof (int));
  397. +  reg_last_set_invalid = (char *) alloca (nregs * sizeof (char));
  398. +
  399. +  bzero (reg_last_death, nregs * sizeof (rtx));
  400. +  bzero (reg_last_set, nregs * sizeof (rtx));
  401. +  bzero (reg_last_set_value, nregs * sizeof (rtx));
  402. +  bzero (reg_last_set_table_tick, nregs * sizeof (short));
  403. +  bzero (reg_last_set_invalid, nregs * sizeof (char));
  404. +
  405. +  init_recog_no_volatile ();
  406. +
  407. +  /* Compute maximum uid value so uid_cuid can be allocated.  */
  408. +
  409. +  for (insn = f, i = 0; insn; insn = NEXT_INSN (insn))
  410. +    if (INSN_UID (insn) > i)
  411. +      i = INSN_UID (insn);
  412. +
  413. +  uid_cuid = (int *) alloca ((i + 1) * sizeof (int));
  414. +
  415. +  /* Compute the mapping from uids to cuids.
  416. +     Cuids are numbers assigned to insns, like uids,
  417. +     except that cuids increase monotonically through the code. 
  418. +
  419. +     Scan all SETs and see if we can deduce anything about what
  420. +     bits are significant for some registers.  */
  421. +
  422. +  for (insn = f, i = 0; insn; insn = NEXT_INSN (insn))
  423. +    {
  424. +      INSN_CUID (insn) = ++i;
  425. +      if (GET_RTX_CLASS (GET_CODE (insn)) == 'i')
  426. +    note_stores (PATTERN (insn), set_nonzero_bits_and_sign_copies);
  427. +    }
  428. +
  429. +
  430. +  label_tick = 1;
  431. +  last_call_cuid = 0;
  432. +  mem_last_set = 0;
  433. +  /* Now scan all the insns in forward order.  */
  434. +  for (insn = f; insn; insn = NEXT_INSN (insn))
  435. +    {
  436. +      if (GET_CODE (insn) == CODE_LABEL)
  437. +    label_tick++;
  438. +      if(GET_CODE (insn) == INSN)
  439. +    {
  440. +      /* Try this insn with each insn it links back to.  */
  441. +      for (links = LOG_LINKS (insn); links; links = XEXP (links, 1))
  442. +        {
  443. +          if(REG_NOTE_KIND (links) != REG_DEP_ANTI 
  444. +             /*&& REG_NOTE_KIND (links) != REG_DEP_OUTPUT 
  445. +             && */ && (GET_CODE (XEXP (links, 0)) == INSN 
  446. +                  && next_nonnote_insn (XEXP (links, 0))
  447. +                       == ORG_NEXT_INSN (XEXP (links, 0)))
  448. +             && GET_CODE (PATTERN (XEXP (links, 0))) == SET
  449. +             && GET_CODE (SET_DEST (PATTERN (XEXP (links, 0))))
  450. +                  == REG
  451. +             && (note
  452. +                  = find_regno_note (insn,
  453. +                                     REG_DEAD,
  454. +                      REGNO(SET_DEST (PATTERN (XEXP (links, 0))))))
  455. +             && rtx_equal_p (XEXP (note, 0),
  456. +                              SET_DEST (PATTERN (XEXP (links, 0))))
  457. +         /* intel2 - begin */
  458. +         /* combine only insns that were created by memory_simplify.
  459. +          */
  460. +         && (RTX_IS_RISC_P (XEXP (links, 0)))
  461. +         /* intel2 - end */
  462. +            )
  463. +            {
  464. +          /* intel2 - begin */
  465. +          rtx inner_link = LOG_LINKS (XEXP (links, 0));
  466. +          int three_insns = 0;
  467. +
  468. +          /* Check that we consider the case of three-insns riscified
  469. +           * insn
  470. +           */
  471. +          if (inner_link)
  472. +            {
  473. +              for (; inner_link; inner_link = XEXP (inner_link, 1))
  474. +                {
  475. +                  rtx temp_insn = XEXP (inner_link, 0);
  476. +
  477. +                  if (REG_NOTE_KIND (inner_link) != REG_DEP_ANTI
  478. +                      /*&& REG_NOTE_KIND (inner_link) != REG_DEP_OUTPUT
  479. +                      &&*/ && (GET_CODE (temp_insn) == INSN
  480. +                          && next_nonnote_insn (temp_insn) ==
  481. +                                  ORG_NEXT_INSN (temp_insn))
  482. +                      && RTX_IS_RISC_P (temp_insn)
  483. +                      && GET_CODE (PATTERN (temp_insn)) == SET
  484. +                      && GET_CODE (SET_DEST (PATTERN (temp_insn)))
  485. +                           == REG
  486. +                      && (note
  487. +                           = find_regno_note (insn,
  488. +                                              REG_DEAD,
  489. +                               REGNO(SET_DEST (PATTERN (temp_insn)))))
  490. +                      && rtx_equal_p (XEXP (note, 0),
  491. +                                       SET_DEST (PATTERN (temp_insn)))
  492. +                    )
  493. +                    {
  494. +                      try_combine (insn, XEXP (links, 0), temp_insn);
  495. +                      three_insns = 1;
  496. +                    }
  497. +                }
  498. +            }
  499. +
  500. +          if (! three_insns)
  501. +            {
  502. +             /* intel2 - end */
  503. +                 try_combine (insn, XEXP (links, 0), 0);
  504. +               }
  505. +            }
  506. +        }
  507. +    }
  508. +      if(GET_CODE (insn) == INSN ||
  509. +         GET_CODE (insn) == CALL_INSN ||
  510. +         GET_CODE (insn) == JUMP_INSN)
  511. +      record_dead_and_set_regs (insn);
  512. +    }
  513. +
  514. +  in_recombine = 0;
  515. +
  516. +}
  517. +
  518. +
  519. +
  520. +/* intel2 - begin */
  521. +
  522. +/* we will probably need this - check it and remvoe it if not... */
  523. +
  524. +/*#include "hard-reg-set.h"*/
  525. +
  526. +/* Set of registers that are free and ready to use at this moment.  */
  527. +
  528. +HARD_REG_SET free_regs;
  529. +
  530. +/* Set of registers that are not recommended for allocating at this moment.  */
  531. +
  532. +static HARD_REG_SET not_recommended_regs;
  533. +
  534. +typedef struct {
  535. +  rtx mem;  /* mem rtx, this regno holds */
  536. +  rtx insn_dead;  /* insn in which this regno dies */
  537. +  rtx insn_load;  /* insn in which this regno is loaded */
  538. +  rtx insn_store;  /* insn in which this regno is stored */
  539. +}  MEM_HOLDER;
  540. +
  541. +/* Indexed by regno, indicates which register currently, holds a copy of
  542. +   memory and the rtx represents this memory, as well as the insn loaded it,
  543. +   and the insn in which this register was dead. */
  544. +
  545. +MEM_HOLDER regno_holds_mem[FIRST_PSEUDO_REGISTER];
  546. +/* Perform simplification of memory accessed instructions by replacing them
  547. +   with risc-like instructions.
  548. +   FILE is a file to output debugging information on,
  549. +   or zero if such output is not desired.  */
  550. +
  551. +void
  552. +memory_simplify (file, f)
  553. +     FILE *file;
  554. +     rtx f;
  555. +{
  556. +  register int block, j;
  557. +  int regno, limit;
  558. +  int i; /* intel1 */
  559. +  int nregs; /* intel1 */
  560. +  char * fmt; /* intel1 */
  561. +  MEM_HOLDER *mhp;
  562. +  rtx copy_reg = NULL;
  563. +  rtx t_insn;
  564. +
  565. +  /* record which is the last register used for a spill reload */
  566. +  static int last_load_reg;
  567. +  /* Initialize reg_holds_mem */
  568. +
  569. +  bzero (regno_holds_mem, sizeof regno_holds_mem);
  570. +    
  571. +  /* since all registers now are hard registers, FIRST_PSEUDO_REGISTER is a
  572. +     valid initialization value */
  573. +
  574. +  last_load_reg = FIRST_PSEUDO_REGISTER;
  575. +
  576. +  hard_reg_flow_analysis (f, file, 0 /* no pseudo registers' info. save */ );
  577. +
  578. +  if (n_basic_blocks <= 0)
  579. +    {
  580. +      return ;
  581. +    }
  582. +  /* To determine which registers are live after any insn, start from
  583. +     the beginning of the basic block and scan insns, noting
  584. +     which registers are set by each insn and which die there. */
  585. +  for (block = 0; block < n_basic_blocks; block++)
  586. +    {
  587. +      register rtx insn;
  588. +      int end_of_block_f;
  589. +
  590. +      if (file)
  591. +    fprintf (file, "\nblock number: %d:\n", block);
  592. +
  593. +      last_load_reg = FIRST_PSEUDO_REGISTER;
  594. +      /* since we cannot remove stores before a jump, we clean all the
  595. +         insn_store data */
  596. +
  597. +      for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
  598. +    regno_holds_mem[regno].insn_store = 0;
  599. +
  600. +      for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
  601. +        /* at the beginning of a block, each non-live hard register is
  602. +       considered free. */
  603. +    {
  604. +      register int offset = regno / REGSET_ELT_BITS;
  605. +      register int bit = 1 << (regno % REGSET_ELT_BITS);
  606. +      if (basic_block_live_at_start[block][offset] & bit)
  607. +        CLEAR_HARD_REG_BIT (free_regs, regno);
  608. +      else
  609. +        SET_HARD_REG_BIT (free_regs, regno);
  610. +        }
  611. +
  612. +      /* Traverse the block, an insn by insn, check for memory references,
  613. +     and find whether a risc-like insns instead are valid. If yes,
  614. +     replace the insn by another insn(s). */
  615. +
  616. +      end_of_block_f = 0;    /* signals the end of block reached */
  617. +
  618. +      for (insn = basic_block_head[block];
  619. +       !end_of_block_f;
  620. +       insn = NEXT_INSN (insn))
  621. +    {
  622. +      rtx note, next, mem_opr = 0;
  623. +      rtx pat = PATTERN (insn);
  624. +      int regno, old_regno;
  625. +      int saved_code;
  626. +
  627. +      /* try to eliminate as much stores as we can using the free_regs
  628. +         and regno_holds_mem information */
  629. +
  630. +      if (GET_CODE (insn) == INSN
  631. +          && GET_CODE (pat) == SET
  632. +          && GET_CODE (SET_DEST (pat)) == MEM
  633. +          && GET_CODE (SET_SRC (pat)) == REG
  634. +          && GET_CODE (XEXP (SET_DEST (pat), 0)) != PRE_DEC
  635. +          && GET_CODE (XEXP (SET_DEST (pat), 0)) != PRE_INC
  636. +          && GET_CODE (XEXP (SET_DEST (pat), 0)) != POST_DEC
  637. +          && GET_CODE (XEXP (SET_DEST (pat), 0)) != POST_INC
  638. +          && (i = remove_redundant_store (SET_DEST (pat), block))
  639. +          && file)
  640. +        fprintf (file,
  641. +                 "insn %d caused a deletion of a redundant store: %d\n",
  642. +                     INSN_UID (insn),
  643. +                     i);
  644. +
  645. +      /* Try to eliminate as much loads as we can using the free_regs
  646. +         and regno_holds_mem information */
  647. +
  648. +      else if (GET_CODE (insn) == INSN
  649. +           && GET_CODE (pat) == SET
  650. +           && (GET_CODE (SET_DEST (pat)) == REG
  651. +               || GET_CODE (SET_DEST (pat)) == MEM)
  652. +           && (GET_CODE (SET_SRC (pat)) == MEM
  653. +               || (GET_CODE (SET_SRC (pat)) == CONST_INT
  654. +                   && flag_risc_const)))
  655. +        {
  656. +          int simple_copy_f = 0;
  657. +          rtx set_src = SET_SRC (pat);
  658. +          rtx set_dest = SET_DEST (pat);
  659. +          enum machine_mode mode = GET_MODE (set_dest);
  660. +
  661. +              if (GET_CODE (SET_DEST (pat)) == REG)
  662. +            old_regno = REGNO (set_dest);
  663. +          else
  664. +            old_regno = FIRST_PSEUDO_REGISTER;
  665. +
  666. +          if (old_regno != FIRST_PSEUDO_REGISTER
  667. +              && (next = next_nonnote_insn (insn))
  668. +                    && GET_RTX_CLASS (GET_CODE (next)) == 'i'
  669. +              && ((note = find_regno_note (next, REG_DEAD, old_regno))
  670. +                  ||
  671. +                  (GET_CODE (PATTERN (next)) == SET && 
  672. +                   rtx_equal_p (set_dest, SET_DEST (PATTERN (next)))))
  673. +              /* tevid */
  674. +              && (note == NULL 
  675. +                  || mode == GET_MODE (XEXP (note, 0))))
  676. +            {
  677. +          rtx new_reg = NULL;
  678. +              rtx old_reg = set_dest; 
  679. +              int stop_replacement = 0;
  680. +
  681. +              /* if this load is redundant (i.e. the memory loaded
  682. +                 exists in any register, and the register we're loading
  683. +                 to will die in the next insn), we can replace loaded
  684. +                 register in the next insn with the already loaded register,
  685. +                 and delete this insn.
  686. +              */
  687. +              if ((regno = find_regno_holds_mem (set_src, mode))
  688. +                                   != FIRST_PSEUDO_REGISTER
  689. +               && HARD_REGNO_NREGS (regno, mode) == 1
  690. +               && regno_holds_mem[regno].insn_load
  691. +#ifdef STACK_REGS
  692. +               && (STACK_REG_P (old_reg)
  693. +               || NON_STACK_REG_P (new_reg = gen_rtx (REG,
  694. +                           mode,
  695. +                           regno)))
  696. +
  697. +#endif
  698. +               && TEST_HARD_REG_BIT (free_regs, regno))
  699. +            {
  700. +#ifdef STACK_REGS
  701. +                      if (!new_reg)
  702. +                new_reg = gen_rtx (REG, mode, regno);
  703. +#endif
  704. +
  705. +              /* replace this register in the next insn */
  706. +                      init_undo_buf ();
  707. +                      saved_code = INSN_CODE (next);
  708. +              subst_in_insn (next,
  709. +                           PATTERN (next),
  710. +                           old_reg,
  711. +                           new_reg,
  712. +                           0,
  713. +                           0);
  714. +              if (note == NULL)
  715. +                { /* Then the dest of next must remain old_reg */
  716. +                  SET_DEST (PATTERN (next)) = old_reg;
  717. +                }
  718. +
  719. +#ifdef REGISTER_CONSTRAINTS
  720. +
  721. +                  INSN_CODE (next) = recog (PATTERN (next), next, 0);
  722. +                  if (INSN_CODE (next) != -1)
  723. +                insn_extract (next);
  724. +
  725. +              if (INSN_CODE (next) == -1
  726. +                  || !constrain_operands (INSN_CODE (next), 1))
  727. +                {
  728. +              /* restore the previous situation */
  729. +              loop_undo_all();
  730. +              INSN_CODE (next) = saved_code;
  731. +                  stop_replacement = 1;
  732. +                 }
  733. +#endif
  734. +              if (!stop_replacement)
  735. +                {
  736. +                  
  737. +              if (regno != old_regno)
  738. +                {
  739. +                  if (note != NULL)
  740. +                    {
  741. +                      /* The regno in the REG_DEAD note should be
  742. +                         also changed */
  743. +
  744. +                          XEXP (note, 0) = new_reg;
  745. +                  
  746. +                          /* Now, if we replaced a REG_DEAD note, and
  747. +                             the new_reg is the destination of the next
  748. +                             insn, we should remove this note */
  749. +
  750. +                          if (GET_CODE (SET_DEST (PATTERN (next)))
  751. +                               == REG
  752. +                          && REGNO (SET_DEST (PATTERN (next)))
  753. +                               == regno)
  754. +                            remove_death (regno, next);
  755. +                        }      
  756. +                      /* replace the registers in the free_register
  757. +                         list */
  758. +
  759. +                      nregs = HARD_REGNO_NREGS (old_regno, mode);
  760. +                      for (i = 0; i < nregs; i++)
  761. +                        SET_HARD_REG_BIT (free_regs, old_regno + i);
  762. +                      nregs = HARD_REGNO_NREGS (regno, mode);
  763. +                      for (i = 0; i < nregs; i++)
  764. +                        CLEAR_HARD_REG_BIT (free_regs, regno + i);
  765. +                    }  /* if (regno != old_regno) */
  766. +                  else
  767. +                  /* regno == old_regno */
  768. +                    {
  769. +                      /* mark that regno is not free anymore */
  770. +                      nregs = HARD_REGNO_NREGS (regno, mode);
  771. +                      for (i = 0; i < nregs; i++)
  772. +                        CLEAR_HARD_REG_BIT (free_regs, regno + i);
  773. +                    }
  774. +
  775. +                  /* now we can delete this insn ... */
  776. +
  777. +                  if (basic_block_head[block] == insn)
  778. +                    basic_block_head[block] = NEXT_INSN (insn);
  779. +
  780. +              mhp = ®no_holds_mem[regno];
  781. +                          /* we should reset the RISC flag on the insns
  782. +                         added for risc, so that they will not be
  783. +                 recombined later */
  784. +
  785. +              
  786. +              if (mhp -> insn_dead)
  787. +                {
  788. +                  t_insn = PREV_INSN (mhp->insn_dead);
  789. +                  while (t_insn && RTX_IS_RISC_P (t_insn))
  790. +                    {
  791. +                      RTX_IS_RISC_P (t_insn) = 0;
  792. +                      t_insn = PREV_INSN (t_insn);
  793. +                    }
  794. +                  remove_death (regno, mhp -> insn_dead);
  795. +                  if (! t_insn)
  796. +                    /* something went wrong */
  797. +                    abort ();
  798. +                }
  799. +
  800. +                  if (file)
  801. +                    fprintf (file,
  802. +                             "insn %d: deleted - redundant "
  803. +                             "load encountered (insn %d)\n",
  804. +                             INSN_UID (insn),
  805. +                             INSN_UID (mhp -> insn_load));
  806. +                        
  807. +              PUT_CODE (insn, NOTE);
  808. +                  NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
  809. +                  NOTE_SOURCE_FILE (insn) = 0;
  810. +
  811. +              /* ... and start working on the next insn */
  812. +
  813. +                  continue;
  814. +
  815. +             }  /* if (!stop_replacement) */
  816. +                  
  817. +            }  /* if ((regno = find_regno_holds_mem (set_src)) !=
  818. +                               FIRST_PSEUDO_REGISTER
  819. +                       && TEST_HARD_REG_BIT (free_regs, regno)) */
  820. +                 
  821. +          else if (regno != FIRST_PSEUDO_REGISTER)
  822. +            /* regno holds the appropriate value but is not free, 
  823. +               so we can use its contents to
  824. +               convert this insn to a simple reg to reg copy */
  825. +            {
  826. +              copy_reg = gen_rtx (REG, mode, regno);
  827. +#ifdef STACK_REGS
  828. +              if (GET_CODE (SET_DEST (pat)) != REG
  829. +                  || (STACK_REG_P (SET_DEST (pat))
  830. +                              == STACK_REG_P (copy_reg)))
  831. +#endif
  832. +                        {                  
  833. +                  simple_copy_f = 1;
  834. +                }
  835. +            }
  836. +
  837. +              else if (old_regno == last_load_reg
  838. +               && (regno =
  839. +                    find_free_reg (GET_MODE (SET_DEST (pat)))) !=
  840. +                       FIRST_PSEUDO_REGISTER
  841. +                   && regno != old_regno)
  842. +                {
  843. +              new_reg = gen_rtx (REG, mode, regno);
  844. +
  845. +                  /* replace this insn's register with regno */
  846. +
  847. +                  SET_DEST (pat) = new_reg;
  848. +
  849. +              /* replace this register in the next insn and its
  850. +                 REG_NOTES */
  851. +              init_undo_buf ();
  852. +              saved_code = INSN_CODE (next);
  853. +              subst_in_insn (next,
  854. +                         PATTERN (next),
  855. +                         old_reg,
  856. +                         new_reg,
  857. +                         0,
  858. +                         0);
  859. +              if (note == NULL)
  860. +               { /* Then the dest of next must remain old_reg */
  861. +                 SET_DEST (PATTERN (next)) = old_reg;
  862. +               }
  863. +
  864. +#ifdef REGISTER_CONSTRAINTS
  865. +                  if ((INSN_CODE (next) = recog (PATTERN (next),
  866. +                             next,
  867. +                             0)) != -1)
  868. +                insn_extract (next);
  869. +
  870. +              if (INSN_CODE (next) == -1
  871. +                  || !constrain_operands (INSN_CODE (next), 1))
  872. +                {
  873. +              /* restore the previous situation */
  874. +                      SET_DEST (pat) = old_reg;
  875. +                      loop_undo_all ();
  876. +                    INSN_CODE (next) = saved_code;
  877. +                  stop_replacement = 1;
  878. +                 }
  879. +#endif
  880. +              if (!stop_replacement)
  881. +                {
  882. +                  if (note != NULL)
  883. +                    {
  884. +                  /* The regno in the REG_DEAD note should be
  885. +                     changed */
  886. +
  887. +                      XEXP (note, 0) = new_reg;
  888. +                  
  889. +                      /* Now, if we replaced a REG_DEAD note, and the
  890. +                         new_reg is the destination of the next insn, we
  891. +                         should remove this note */
  892. +
  893. +                      if (GET_CODE (SET_DEST (PATTERN (next))) == REG
  894. +                      && REGNO (SET_DEST (PATTERN (next))) == regno)
  895. +                        remove_death (regno, next);
  896. +                }
  897. +                  /* replace the registers in the free_register
  898. +                     list */
  899. +
  900. +                  nregs = HARD_REGNO_NREGS (regno, mode);
  901. +                  for (i = 0; i < nregs; i++)
  902. +                    CLEAR_HARD_REG_BIT (free_regs, regno + i);
  903. +                  nregs = HARD_REGNO_NREGS (old_regno, mode);
  904. +                  for (i = 0; i < nregs; i++)
  905. +                    SET_HARD_REG_BIT (free_regs, old_regno + i);
  906. +
  907. +                  /* replace relevant data in regno_holds_mem */
  908. +                  regno_holds_mem[regno].mem = set_src;
  909. +                  regno_holds_mem[regno].insn_load = insn;
  910. +                  regno_holds_mem[regno].insn_dead = next;
  911. +
  912. +                  if (file)
  913. +                    fprintf (file, 
  914. +                    "insn %d: replacing reload register %d with register %d\n",
  915. +                INSN_UID (insn), old_regno, regno);
  916. +             }  /* if (!stop_replacement) */
  917. +                  
  918. +                }  /* else if (old_regno == last_load_reg
  919. +                   && (regno =
  920. +                  find_free_reg (GET_MODE (set_dest))) !=
  921. +                              FIRST_PSEUDO_REGISTER)
  922. +               */
  923. +
  924. +          else if (old_regno == last_load_reg
  925. +               && file)
  926. +            fprintf (file,
  927. +                 "insn %d: no free register found for reload."
  928. +                     "\n", 
  929. +                 INSN_UID (insn));
  930. +
  931. +            }  /* if ((next = next_nonnote_insn (insn))
  932. +                          && GET_RTX_CLASS (GET_CODE (next)) == 'i'
  933. +                    && (note = find_regno_note (next, REG_DEAD, old_regno)))
  934. +                   */
  935. +
  936. +          else if ((regno = find_regno_holds_mem (set_src, mode)) 
  937. +                    != FIRST_PSEUDO_REGISTER
  938. +                && HARD_REGNO_NREGS (regno, mode) == 1)
  939. +        {
  940. +          copy_reg = gen_rtx (REG, mode, regno);
  941. +#ifdef STACK_REGS
  942. +          if (GET_CODE (set_dest) != REG
  943. +              || (STACK_REG_P (set_dest) == STACK_REG_P (copy_reg)))
  944. +#endif
  945. +                    simple_copy_f = 1;
  946. +            }
  947. +
  948. +          if (simple_copy_f)
  949. +        {
  950. +          MEM_HOLDER *mhp_org;
  951. +          rtx mem;
  952. +                
  953. +          /* we can change this insn to a simple reg copy, instead
  954. +             of a load or store */
  955. +
  956. +          mem = SET_SRC (pat);
  957. +          if (copy_reg == NULL)
  958. +            {
  959. +              copy_reg = gen_rtx (REG, mode, regno);
  960. +            }
  961. +
  962. +          saved_code = INSN_CODE (insn);
  963. +          SET_SRC (pat) = copy_reg;
  964. +
  965. +#ifdef REGISTER_CONSTRAINTS
  966. +              if ((INSN_CODE (insn) = recog (PATTERN (insn),
  967. +                         insn,
  968. +                         0)) != -1)
  969. +            insn_extract (insn);
  970. +
  971. +          if (INSN_CODE (insn) == -1
  972. +              || !constrain_operands (INSN_CODE (insn), 1))
  973. +            {
  974. +              SET_SRC (pat) = mem;
  975. +              INSN_CODE (insn) = saved_code;
  976. +            }
  977. +          else
  978. +            {
  979. +#endif
  980. +
  981. +              /* now we should eliminate the possibility of the risc
  982. +                 sequence loaded the memory int regno, to be later
  983. +                 recombined */
  984. +
  985. +              mhp_org = ®no_holds_mem[regno];
  986. +              mhp = ®no_holds_mem[old_regno];
  987. +              if (mhp_org -> insn_load)
  988. +            {
  989. +                  /* we should reset the RISC flag on the insns
  990. +                     added for risc, so that they will not be
  991. +                     recombined later */
  992. +
  993. +
  994. +              if (mhp_org -> insn_dead)
  995. +                {
  996. +                  t_insn = PREV_INSN (mhp_org->insn_dead);
  997. +                  while (t_insn  && RTX_IS_RISC_P (t_insn))
  998. +                    {
  999. +                      RTX_IS_RISC_P (t_insn) = 0;
  1000. +                      t_insn = PREV_INSN (t_insn);
  1001. +                    }
  1002. +                  if (! t_insn)
  1003. +                    fprintf (stderr,
  1004. +                             "Not encountered insn_dead\n");
  1005. +                  remove_death (regno, mhp_org -> insn_dead);
  1006. +                }
  1007. +            }  /* if (mhp_org -> insn_load) */
  1008. +
  1009. +              /* we should update old_regno entries in
  1010. +             regno_holds_mem array */
  1011. +
  1012. +              mhp -> mem = mhp_org -> mem;
  1013. +              mhp -> insn_load = insn;
  1014. +              
  1015. +              if (file)
  1016. +                fprintf (file,
  1017. +                         "insn %d: mem source replaced with reg\n",
  1018. +                         INSN_UID (insn));
  1019. +
  1020. +#ifdef REGISTER_CONSTRAINTS
  1021. +            }  /* else of if (INSN_CODE (insn) == -1
  1022. +                           || !constrain_operands (INSN_CODE (insn), 1))
  1023. +               */
  1024. +#endif
  1025. +        }  /* if (simple_copy_f) */
  1026. +
  1027. +              if (GET_CODE (pat) == SET 
  1028. +                  && GET_CODE (SET_DEST (pat)) == REG)
  1029. +            last_load_reg = REGNO (SET_DEST (pat));
  1030. +
  1031. +        }  /* if (GET_CODE (insn) == INSN
  1032. +                      && GET_CODE (pat) == SET
  1033. +                      && GET_CODE (SET_DEST (pat)) == REG
  1034. +                      && GET_CODE (SET_SRC (pat)) == MEM) */
  1035. +
  1036. +      /* mark all the original insns (those not created here). Since
  1037. +         we use here the same bit as RTX_IS_SPILL_P, we should do this
  1038. +         after checking for the spill reload register substitution. */
  1039. +      RTX_IS_RISC_P (insn) = 0;
  1040. +
  1041. +      end_of_block_f = (insn == basic_block_end[block]);
  1042. +      if (!INSN_UID (insn))
  1043. +        fatal ("\nMemory simplify: Scanning illegal insn.");
  1044. +
  1045. +      if (GET_CODE (insn) == INSN)
  1046. +        {
  1047. +          register rtx note;
  1048. +
  1049. +          if (GET_CODE (pat) == SET)
  1050. +        {
  1051. +          rtx prev_insn, next_insn;
  1052. +          rtx insn_src = SET_SRC (pat);
  1053. +          rtx insn_dest = SET_DEST (pat);
  1054. +          int mem_opr_is_src = 0;
  1055. +
  1056. +          /* indicates which of the two SET_SRC's arguments is a
  1057. +             memory reference. 0 - indicates the first one and 1 -
  1058. +             the second */
  1059. +                 
  1060. +          int mem_loc;
  1061. +
  1062. +          switch (GET_CODE (insn_src))
  1063. +            {
  1064. +              case CONST_INT:
  1065. +                if (flag_risc_const
  1066. +                    && GET_CODE (insn_dest) == MEM
  1067. +                    && !push_operand (insn_dest, 
  1068. +                                         GET_MODE (insn_dest)))
  1069. +              {
  1070. +                mem_opr = insn_src;
  1071. +                mem_loc = 1;
  1072. +                            mem_opr_is_src = 1;
  1073. +                /* this is a trick to make the code replacing
  1074. +                   the memory operand in any other insn, valid
  1075. +                   even here.
  1076. +                   Note that insn_src now is actually the
  1077. +                   insn's pattern, and not the SET_SRC of it. */
  1078. +                insn_src = pat;
  1079. +              }
  1080. +                        break;
  1081. +              case REG:
  1082. +              case SYMBOL_REF:
  1083. +            /* do nothing, this is a simple copy */
  1084. +            break;
  1085. +              case MEM:
  1086. +            if (GET_CODE (insn_dest) == CC0)
  1087. +              /* this insn is not a simple load */
  1088. +              {
  1089. +                mem_opr = insn_src;
  1090. +                mem_loc = 1;
  1091. +
  1092. +                            mem_opr_is_src = 1;
  1093. +                /* this is a trick to make the code replacing
  1094. +                   the memory operand in any other insn, valid
  1095. +                   even here.
  1096. +                   Note that insn_src now is actually the
  1097. +                   insn's pattern, and not the SET_SRC of it. */
  1098. +                insn_src = pat;
  1099. +              }
  1100. +            break;
  1101. +              default:
  1102. +                if (GET_CODE (insn_src) == SIGN_EXTRACT
  1103. +                    || GET_CODE (insn_src) == ZERO_EXTRACT)
  1104. +                  { /* These cannot be handled properly */
  1105. +                    break;
  1106. +                  }
  1107. +            fmt = GET_RTX_FORMAT (GET_CODE (insn_src));
  1108. +            if (GET_CODE (XEXP (insn_src, 0)) == MEM)
  1109. +              {
  1110. +                mem_loc = 0;
  1111. +                mem_opr = XEXP (insn_src, 0);
  1112. +              }
  1113. +            else if (GET_RTX_LENGTH (GET_CODE (insn_src)) > 1
  1114. +                 && fmt[1] == 'e'
  1115. +                 && GET_CODE (XEXP (insn_src, 1)) == MEM)
  1116. +              {
  1117. +                mem_loc = 1;
  1118. +                mem_opr = XEXP (insn_src, 1);
  1119. +              }
  1120. +            break;
  1121. +            }    /* switch (GET_CODE(insn_src)) */
  1122. +
  1123. +          if (mem_opr)
  1124. +            /* we found a memory operand that we should replace */
  1125. +            {
  1126. +              int skip_load_f = 0;  /* should we skip mem load? */
  1127. +              int regno_is_free = 0; /* was it allocated by find_free_reg */
  1128. +              int memory_dest_changed  
  1129. +                           = GET_CODE (insn_dest) == MEM
  1130. +                              && rtx_equal_p (insn_dest, mem_opr);
  1131. +              enum machine_mode mode = GET_MODE (mem_opr);
  1132. +
  1133. +                      if (GET_CODE (mem_opr) == CONST_INT)
  1134. +                        mode = GET_MODE (insn_dest);
  1135. +              if ((regno = find_regno_holds_mem (mem_opr, mode)) 
  1136. +                   != FIRST_PSEUDO_REGISTER)
  1137. +            {
  1138. +              if (HARD_REGNO_NREGS (regno, mode) == 1
  1139. +                  && TEST_HARD_REG_BIT (free_regs, regno))
  1140. +                skip_load_f = 1;
  1141. +              else
  1142. +                regno = FIRST_PSEUDO_REGISTER;
  1143. +            }
  1144. +                      if (regno == FIRST_PSEUDO_REGISTER
  1145. +#ifdef IS_RISC_MODE
  1146. +                  && (IS_RISC_MODE (GET_MODE (mem_opr))
  1147. +                      || GET_CODE (mem_opr) == CONST_INT)
  1148. +#endif
  1149. +                         )
  1150. +                        { /* Look forward a few insns to see
  1151. +                             if this mem_opr will be loaded
  1152. +                             into a register and if it is then
  1153. +                             try to use that register for riscifying.  */
  1154. +                          t_insn = next_nonnote_insn (insn);
  1155. +                          while (t_insn && regno == FIRST_PSEUDO_REGISTER)
  1156. +                            {
  1157. +                              if (GET_CODE (t_insn) == CODE_LABEL
  1158. +                                  || GET_CODE (t_insn) == CALL_INSN)
  1159. +                                {
  1160. +                                  break;
  1161. +                                }
  1162. +                              if (GET_CODE (t_insn) == INSN)
  1163. +                                {
  1164. +                                  register rtx dest;
  1165. +                                  
  1166. +                                  if (GET_CODE (PATTERN (t_insn)) != SET)
  1167. +                                    {
  1168. +                                      break;
  1169. +                                    }
  1170. +                                  dest = SET_DEST (PATTERN (t_insn));
  1171. +                                  if (GET_CODE (dest) == REG
  1172. +                                      && rtx_equal_p (mem_opr,
  1173. +                                          SET_SRC (PATTERN (t_insn))))
  1174. +                                    {
  1175. +                                      regno = REGNO (dest);
  1176. +                          nregs = HARD_REGNO_NREGS (regno, mode);
  1177. +                          if (HARD_REGNO_MODE_OK (regno, mode))
  1178. +                            {
  1179. +                              for (i = 0; i < nregs; i++)
  1180. +                                if (! TEST_HARD_REG_BIT (free_regs,
  1181. +                                              regno + i))
  1182. +                                  {
  1183. +                                    regno = FIRST_PSEUDO_REGISTER;
  1184. +                                    break;
  1185. +                                  }
  1186. +                            }
  1187. +                          else
  1188. +                            regno = FIRST_PSEUDO_REGISTER;
  1189. +                                    }
  1190. +                                  else if (GET_CODE (dest) == MEM
  1191. +                                           && ! push_operand (dest,
  1192. +                                                         GET_MODE (dest)))
  1193. +                                    /* since there is a write to memory, no use
  1194. +                                       in trying to load something that might be
  1195. +                                       clobbered. */
  1196. +                        regno = FIRST_PSEUDO_REGISTER;
  1197. +                                }
  1198. +                              t_insn = next_nonnote_insn (t_insn);
  1199. +                            }
  1200. +                                     
  1201. +                        }
  1202. +                      if (regno == FIRST_PSEUDO_REGISTER
  1203. +              && GET_CODE (insn_dest) == REG
  1204. +#ifdef IS_RISC_MODE
  1205. +                  && (IS_RISC_MODE (GET_MODE (mem_opr))
  1206. +                      || GET_CODE (mem_opr) == CONST_INT)
  1207. +#endif
  1208. +                         )
  1209. +            {
  1210. +              regno = REGNO (insn_dest);
  1211. +              nregs = HARD_REGNO_NREGS (regno, mode);
  1212. +
  1213. +              if (HARD_REGNO_MODE_OK (regno, mode))
  1214. +                {
  1215. +                  for (i = 0; i < nregs; i++)
  1216. +                    if (! TEST_HARD_REG_BIT (free_regs,
  1217. +                                 regno + i))
  1218. +                      {
  1219. +                        regno = FIRST_PSEUDO_REGISTER;
  1220. +                        break;
  1221. +                      }
  1222. +                }
  1223. +              else
  1224. +                regno = FIRST_PSEUDO_REGISTER;
  1225. +            }
  1226. +
  1227. +                  if (regno == FIRST_PSEUDO_REGISTER
  1228. +#ifdef IS_RISC_MODE
  1229. +                  && (IS_RISC_MODE (GET_MODE (mem_opr))
  1230. +                      || GET_CODE (mem_opr) == CONST_INT)
  1231. +#endif
  1232. +                         )
  1233. +            {
  1234. +              prev_insn = prev_nonnote_insn (insn);
  1235. +              next_insn = next_nonnote_insn (insn);
  1236. +
  1237. +              /* update set of not recommended hard registers
  1238. +                 for find_free_reg () */
  1239. +              /* NOTE that we can refer only to integer
  1240. +                 registers, but now we do it more general. */
  1241. +
  1242. +              for (regno = 0;
  1243. +                   regno < FIRST_PSEUDO_REGISTER;
  1244. +                   regno++)
  1245. +
  1246. +                if ((prev_insn
  1247. +                     && GET_RTX_CLASS (GET_CODE (prev_insn))
  1248. +                          == 'i'
  1249. +                     && (INSN_USES_REGNO (prev_insn, regno)
  1250. +                     || INSN_SETS_REGNO (prev_insn, regno)))
  1251. +                     || (next_insn
  1252. +                        && GET_RTX_CLASS (GET_CODE (next_insn))
  1253. +                                      == 'i'
  1254. +                 && (INSN_USES_REGNO (next_insn, regno)
  1255. +                     /* If the destination is MEM we
  1256. +                        might write the new register
  1257. +                        contents to the memory as the
  1258. +                        last insn. This will force us to
  1259. +                        also consider a write to the
  1260. +                        allocated register in the next
  1261. +                        insn. */
  1262. +
  1263. +                  || (memory_dest_changed
  1264. +                      && INSN_SETS_REGNO (next_insn,
  1265. +                                          regno)))))
  1266. +                  SET_HARD_REG_BIT (not_recommended_regs,regno);
  1267. +                else
  1268. +                  CLEAR_HARD_REG_BIT (not_recommended_regs,
  1269. +                                regno);
  1270. +
  1271. +              regno = find_free_reg (mode);
  1272. +              regno_is_free = 1;
  1273. +            }
  1274. +
  1275. +                  if (regno != FIRST_PSEUDO_REGISTER)
  1276. +            {
  1277. +              rtx new_insn, new_reg, link;
  1278. +
  1279. +              /* before changing the insn, and adding others, we
  1280. +                 check the changed insn will be legal. */
  1281. +
  1282. +              new_reg = gen_rtx (REG, mode, regno);
  1283. +              saved_code = INSN_CODE (insn);
  1284. +              if (mem_opr_is_src)
  1285. +                {
  1286. +                  SET_SRC (pat) = new_reg;
  1287. +                }
  1288. +              else
  1289. +                {
  1290. +                              init_undo_buf ();
  1291. +                  subst_in_insn (insn, pat, mem_opr, new_reg, 0, 0);
  1292. +                }
  1293. +                  
  1294. +#ifdef REGISTER_CONSTRAINTS
  1295. +              /* now check if the insn's O.K. */
  1296. +
  1297. +              INSN_CODE (insn) = recog (pat, insn, 0);
  1298. +
  1299. +              if (INSN_CODE (insn) != -1)
  1300. +                insn_extract (insn);
  1301. +
  1302. +              if (INSN_CODE (insn) == -1
  1303. +                  || ! constrain_operands (INSN_CODE (insn), 1))
  1304. +                    {
  1305. +                  if (mem_opr_is_src)
  1306. +                    {
  1307. +                      SET_SRC (pat) = mem_opr;
  1308. +                    }
  1309. +                  else
  1310. +                    {
  1311. +                      loop_undo_all ();
  1312. +                    }
  1313. +                  INSN_CODE (insn) = saved_code;
  1314. +                }
  1315. +              else  /* the replacement is valid */
  1316. +                {
  1317. +#endif
  1318. +                  if (! skip_load_f)
  1319. +                    {
  1320. +
  1321. +                      if (mode != SImode && regno_is_free
  1322. +                          && GET_CODE (mem_opr) == CONST_INT)
  1323. +                        {
  1324. +                          new_reg = gen_rtx (REG, SImode, regno);
  1325. +                        }
  1326. +                      /* load the memory into regno */
  1327. +                      new_insn 
  1328. +                       = make_insn_raw (gen_rtx (SET,
  1329. +                                 VOIDmode,
  1330. +                                 new_reg,
  1331. +                                  mem_opr));
  1332. +
  1333. +                  RTX_IS_RISC_P (new_insn) = 1;
  1334. +                      add_insn_after (new_insn,
  1335. +                          PREV_INSN (insn));
  1336. +
  1337. +                  /* record regno as the last register that
  1338. +                    is used for loading */
  1339. +                  
  1340. +                  last_load_reg = regno;
  1341. +
  1342. +
  1343. +                  /* update new data in regno_holds_mem[] */
  1344. +                      
  1345. +#if 0
  1346. +                  mhp = ®no_holds_mem[regno];
  1347. +                  mhp -> insn_load = new_insn;
  1348. +#endif
  1349. +                  update_regno_holds_mem(new_insn,
  1350. +                             PATTERN(new_insn));
  1351. +                      
  1352. +                  /* if insn was the first insn in this
  1353. +                     block this should be updated */
  1354. +
  1355. +                  if (basic_block_head[block] == insn)
  1356. +                    basic_block_head[block] = new_insn;
  1357. +
  1358. +                  if (file)
  1359. +                    {
  1360. +                    fprintf (file, "insn %d was added ",
  1361. +                           INSN_UID (new_insn));
  1362. +                    fprintf (file, "before insn %d\n",
  1363. +                               INSN_UID (insn));
  1364. +                    }
  1365. +
  1366. +                  /* move the insn's LOG_LINKS to new_insn */
  1367. +                  LOG_LINKS (new_insn) = LOG_LINKS (insn);
  1368. +                  LOG_LINKS (insn) = 0;
  1369. +
  1370. +                  /* move all relevant REG_DEAD notes to
  1371. +                     new_insn */
  1372. +                  for (note = REG_NOTES (insn);
  1373. +                       note;
  1374. +                       note = XEXP (note, 1))
  1375. +                    {
  1376. +                      if (REG_NOTE_KIND (note) == REG_DEAD)
  1377. +                    {
  1378. +                      register int regno 
  1379. +                        = REGNO (XEXP (note, 0));
  1380. +
  1381. +                      if (GET_RTX_LENGTH (
  1382. +                          GET_CODE (insn_src)) < 2
  1383. +                            || GET_CODE (XEXP (insn_src,
  1384. +                                   1 - mem_loc))
  1385. +                                   != REG
  1386. +                           || REGNO (XEXP (insn_src,
  1387. +                             1 - mem_loc))
  1388. +                            != regno)
  1389. +                        {
  1390. +                              
  1391. +                          /* this note does not refer to
  1392. +                             the register that will be
  1393. +                             used from now on within
  1394. +                             insn, thus we move it to
  1395. +                            new_insn. */
  1396. +
  1397. +                          remove_note (insn, note);
  1398. +                          mhp = ®no_holds_mem[regno];
  1399. +                          REG_NOTES (new_insn) =
  1400. +                          gen_rtx (EXPR_LIST,
  1401. +                            REG_DEAD,
  1402. +                            XEXP (note, 0),
  1403. +                            REG_NOTES(new_insn));
  1404. +                          mhp -> insn_dead = new_insn;
  1405. +
  1406. +                          SET_HARD_REG_BIT
  1407. +                               (free_regs,
  1408. +                                REGNO (XEXP (note, 0)));
  1409. +                        }
  1410. +                    }  /* if (REG_NOTE_KIND (note) == REG_DEAD) */
  1411. +                    }  /* for (note = REG_NOTES (insn);
  1412. +                               note;
  1413. +                               note = XEXP (note, 1)) */
  1414. +                }  /* if (! skip_load_f) */
  1415. +                      else
  1416. +                /* we use an already loaded register */
  1417. +                {
  1418. +
  1419. +                  /* since we use a load for a possibly 
  1420. +                     previously riscified insn, we should
  1421. +                     unmark the insns created for that insn,
  1422. +                     so that recombine will not try to
  1423. +                     delete its load */
  1424. +                  mhp = ®no_holds_mem[regno];
  1425. +                  if (mhp -> insn_dead)
  1426. +                    {
  1427. +                      /* we should reset the RISC flag on
  1428. +                         the insns added for risc, so that
  1429. +                         they will not be recombined later
  1430. +                      */
  1431. +
  1432. +                      t_insn = PREV_INSN (mhp -> insn_dead);
  1433. +                      while (t_insn && RTX_IS_RISC_P (t_insn))
  1434. +                    {
  1435. +                       RTX_IS_RISC_P (t_insn) = 0;
  1436. +                       t_insn = PREV_INSN (t_insn);
  1437. +                    }
  1438. +                          remove_death (regno, mhp->insn_dead);
  1439. +                        }  /* if (mhp -> insn_load) */
  1440. +
  1441. +                  if (file)
  1442. +                    {
  1443. +                      fprintf (file, "insn %d: changed mem ",
  1444. +                               INSN_UID (insn));
  1445. +                      fprintf (file, "operand with already "
  1446. +                               "loaded register %d\n",
  1447. +                               regno);
  1448. +                    }
  1449. +                }
  1450. +
  1451. +                      /* in the case the memory operand was also the
  1452. +                 insn's destination, we should add an insn
  1453. +                 to store the result, now stored in
  1454. +                 new_reg. */
  1455. +
  1456. +                      if (memory_dest_changed)
  1457. +                    {
  1458. +                      /* Since memory destination was replaced by
  1459. +                         a register, its contents is clobbered */
  1460. +
  1461. +#if 0
  1462. +                  regno_holds_mem[regno].mem = 0;
  1463. +#endif
  1464. +                  bzero (®no_holds_mem[regno],
  1465. +                         sizeof (MEM_HOLDER));
  1466. +                  update_entries (new_reg);
  1467. +
  1468. +                  new_insn = make_insn_raw (pat);
  1469. +
  1470. +                  RTX_IS_RISC_P (new_insn) = 1;
  1471. +                  add_insn_after (new_insn,
  1472. +                              PREV_INSN (insn));
  1473. +
  1474. +                  if (skip_load_f
  1475. +                      && basic_block_head[block] == insn)
  1476. +                    basic_block_head[block] = new_insn;
  1477. +
  1478. +                  if (file
  1479. +                      && ! skip_load_f)
  1480. +                    {
  1481. +                      fprintf (file, "insn %d was also ",
  1482. +                           INSN_UID (new_insn));
  1483. +                      fprintf (file, "added before insn ");
  1484. +                      fprintf (file, "%d\n",
  1485. +                              INSN_UID (insn));
  1486. +                    }
  1487. +                  else if (file)
  1488. +                    {
  1489. +                    fprintf (file,
  1490. +                             "insn %d was added before "
  1491. +                             "insn %d, load was saved\n",
  1492. +                             INSN_UID (new_insn),
  1493. +                             INSN_UID (insn));
  1494. +                   }
  1495. +
  1496. +
  1497. +                  /* change insn to be just a store insn */
  1498. +                  PATTERN (insn) = gen_rtx (SET,
  1499. +                                VOIDmode,
  1500. +                                mem_opr,
  1501. +                                new_reg);
  1502. +
  1503. +                  /* now we might find that a previous
  1504. +                     store is redundant... */
  1505. +                  if ((i = remove_redundant_store (mem_opr,
  1506. +                                   block))
  1507. +                       && file)
  1508. +                    {
  1509. +                    fprintf (file,
  1510. +                             "insn %d: caused deletion of "
  1511. +                             "a redundant store: %d\n",
  1512. +                             INSN_UID (insn),
  1513. +                             i);
  1514. +                    }
  1515. +
  1516. +                  /* now we actually changed the insn's
  1517. +                     code, so we erase the current one and
  1518. +                     we let next phases (probably sched2) to
  1519. +                     update this code. */
  1520. +
  1521. +                  INSN_CODE (insn) = -1;
  1522. +
  1523. +                  if (! skip_load_f)
  1524. +                    {
  1525. +                      /* add the last_new_insn to the new_insn's
  1526. +                     dependency list */
  1527. +
  1528. +                      link = rtx_alloc (INSN_LIST);
  1529. +                      PUT_REG_NOTE_KIND (link, 0);
  1530. +                      XEXP (link, 0) = PREV_INSN (new_insn);
  1531. +                      XEXP (link, 1) = LOG_LINKS (new_insn);
  1532. +                      LOG_LINKS (new_insn) = link;
  1533. +                    }
  1534. +                }    /* if (memory_dest_changed) */
  1535. +
  1536. +                      /* add the new_insn to the insn's dependency
  1537. +                 list */
  1538. +
  1539. +                      if (! skip_load_f
  1540. +                  || memory_dest_changed)
  1541. +                {
  1542. +                  link = rtx_alloc (INSN_LIST);
  1543. +                  PUT_REG_NOTE_KIND (link, 0);
  1544. +                  XEXP (link, 0) = new_insn;
  1545. +                  XEXP (link, 1) = LOG_LINKS (insn);
  1546. +                  LOG_LINKS (insn) = link;
  1547. +                }
  1548. +
  1549. +                  /* Add a REG_DEAD note to the last insn to
  1550. +                     indicate that the used register is no
  1551. +                     longer needed.
  1552. +                     This is not needed for this phase since we
  1553. +                     do not remove this register from the free
  1554. +                     register list (we just mark it to indicate
  1555. +                     that next allocation of free register, will
  1556. +                     not return it again, so that dependency
  1557. +                     between adjacent insns will be as less as
  1558. +                     possible). */
  1559. +
  1560. +                  if (GET_CODE (insn_dest) != REG
  1561. +                  || REGNO (insn_dest) != REGNO (new_reg))
  1562. +                      {
  1563. +                REG_NOTES (insn) 
  1564. +                  = gen_rtx (EXPR_LIST,
  1565. +                         REG_DEAD,
  1566. +                         new_reg, 
  1567. +                         REG_NOTES (insn));
  1568. +                      }
  1569. +#ifdef REGISTER_CONSTRAINTS
  1570. +                    }  /* the replacement is valid */
  1571. +#endif
  1572. +            }  /* if (regno != FIRST_PSEUDO_REGISTER) */
  1573. +              else if (file)
  1574. +            {
  1575. +                    fprintf (file, "insn %d: No suitable free hard",
  1576. +                                         INSN_UID (insn));
  1577. +                    fprintf (file, " register found for risc\n");
  1578. +            }
  1579. +            }  /* if (mem_opr) */
  1580. +        }  /* if (GET_CODE (pat) == SET) */
  1581. +            }  /* if (GET_CODE(insn) == INSN) */
  1582. +
  1583. +      if (GET_CODE (insn) == CODE_LABEL)
  1584. +        bzero (regno_holds_mem, sizeof regno_holds_mem);
  1585. +
  1586. +      if (GET_RTX_CLASS (GET_CODE (insn)) == 'i')
  1587. +        {
  1588. +
  1589. +          if (GET_CODE (insn) == CALL_INSN)
  1590. +            {
  1591. +           /* all call clobbered registers are now free */
  1592. +
  1593. +           for (j = 0; j < FIRST_PSEUDO_REGISTER; j++)
  1594. +             if (call_used_regs[j])
  1595. +                  SET_HARD_REG_BIT (free_regs, j);
  1596. +            }
  1597. +
  1598. +          update_free_regs (PATTERN (insn));
  1599. +
  1600. +          update_regno_holds_mem (insn, PATTERN (insn));
  1601. +
  1602. +          /* add each dead register to the free_regs set */
  1603. +          /* mark each dead regno in the regno_holds_mem array */
  1604. +          for (note = REG_NOTES (insn); note; note = XEXP (note, 1))
  1605. +            {
  1606. +          if ((REG_NOTE_KIND (note) == REG_DEAD
  1607. +               || REG_NOTE_KIND (note) == REG_UNUSED)
  1608. +              && GET_CODE (XEXP (note, 0)) == REG)
  1609. +            {
  1610. +              regno = REGNO (XEXP (note, 0));
  1611. +              nregs = 
  1612. +                HARD_REGNO_NREGS (regno, GET_MODE (XEXP (note, 0)));
  1613. +  
  1614. +              for (i = 0; i < nregs; i++)
  1615. +                SET_HARD_REG_BIT (free_regs, regno + i);
  1616. +              regno_holds_mem[regno].insn_dead = insn;
  1617. +            }
  1618. +        }
  1619. +          if ((note = find_reg_note (insn, REG_WAS_0, 0)))
  1620. +            {
  1621. +              rtx set;
  1622. +              set = single_set (insn);
  1623. +              if (set == NULL 
  1624. +              || GET_CODE (SET_DEST (set)) == REG)
  1625. +                { /* Since reg may have been reused.  */
  1626. +              remove_note (insn, note);
  1627. +                }
  1628. +            }
  1629. +        }  /* if (GET_RTX_CLASS (GET_CODE (insn)) == 'i') */
  1630. +    }  /* for (insn = basic_block_head[block]; */
  1631. +    }  /* for (block = 0; block < n_basic_blocks; block++) */
  1632. +
  1633. +    /* mark each insn with it's next nonnote insn so that recombine can work */
  1634. +    {
  1635. +
  1636. +      t_insn = f;
  1637. +      while (t_insn)
  1638. +        {
  1639. +          if (GET_CODE (t_insn) == INSN)
  1640. +            ORG_NEXT_INSN (t_insn) = next_nonnote_insn (t_insn);
  1641. +          t_insn = NEXT_INSN (t_insn);
  1642. +        }
  1643. +    }
  1644. +}                /* memory_simplify (file, f) */
  1645. +
  1646. +
  1647. +static void
  1648. +dump_free_registers (file)
  1649. +     FILE *file;
  1650. +{
  1651. +  register int regno;
  1652. +
  1653. +  fprintf (file, "Free registers now are: ");
  1654. +  for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
  1655. +    if (TEST_HARD_REG_BIT (free_regs, regno))
  1656. +      {
  1657. +    fprintf (file, " %d", regno);
  1658. +      }
  1659. +  fprintf (file, "\n");
  1660. +}
  1661. +
  1662. +/*  Finds a free register that is able to contain a value of mode MODE.
  1663. + *  Returns the number of the hard register (or the first hard register, in
  1664. + *  case of multi-register value) found, if such exists, and mark it in the
  1665. + *  regs_ever_live array. Otherwise returns  FIRST_PSEUDO_REGISTER.
  1666. + */
  1667. +
  1668. +int
  1669. +find_free_reg (mode)
  1670. +     enum machine_mode mode;
  1671. +{
  1672. +  register int regno;
  1673. +
  1674. +  /* record last_reg retunrned. Try next find form this reg on. */
  1675. +  static int last_reg;
  1676. +
  1677. +  int not_desired;        /* is this the "not-desired" regset: i.e. are we going to
  1678. +            * take the register from those who are not "safe" within
  1679. +            * a function (their values is promised not to be altered).
  1680. +            */
  1681. +  int second_half;        /* is this the second half of the "round-robin" search */
  1682. +
  1683. +#ifdef IS_RISC_MODE
  1684. +  if (!IS_RISC_MODE (mode))
  1685. +    {
  1686. +      return (FIRST_PSEUDO_REGISTER);
  1687. +    }
  1688. +#endif
  1689. +  /* we handle only DImode SImode, HImode and QImode */
  1690. +  switch (mode)
  1691. +    {
  1692. +    case DImode:
  1693. +    case SImode:
  1694. +    case HImode:
  1695. +    case QImode:
  1696. +
  1697. +      /* Try to find the register among those whos value is not "safe"
  1698. +       * first.
  1699. +       */
  1700. +      for (not_desired = 0; not_desired < 2; not_desired++)
  1701. +    {
  1702. +      int last_reg_scanned = 0;
  1703. +
  1704. +      /* implement a "round-robin" algorithm for register scanning.
  1705. +         fisrt look from the last_reg and on, and then from 0 to
  1706. +         last_reg. */
  1707. +         
  1708. +      for (regno = (last_reg + 1) % FIRST_PSEUDO_REGISTER;
  1709. +           ! last_reg_scanned;
  1710. +           regno = (regno + 1) % FIRST_PSEUDO_REGISTER)
  1711. +        {
  1712. +          register int i, nregs = HARD_REGNO_NREGS (regno, mode);
  1713. +          register int found = 1;
  1714. +
  1715. +          last_reg_scanned = last_reg == regno;
  1716. +          for (i = 0; i < nregs; i++)
  1717. +            {
  1718. +              if (! not_desired
  1719. +              && (! call_used_regs[regno + i]
  1720. +              || TEST_HARD_REG_BIT (not_recommended_regs,
  1721. +                          regno + i)))
  1722. +            found = 0;
  1723. +              else if (! fixed_regs[regno + i]
  1724. +                       && TEST_HARD_REG_BIT (free_regs, regno + i)
  1725. +                       && HARD_REGNO_MODE_OK (regno + i, mode)
  1726. +#ifdef ELIMINABLE_REGS
  1727. +               && (! frame_pointer_needed
  1728. +                   || regno != FRAME_POINTER_REGNUM)
  1729. +#endif
  1730. +               /* allow only registers that lived before this
  1731. +                  phase to take part. This might reduce the number
  1732. +                  of registers available, but otherwise some
  1733. +                  problems may occur due to use of a register that
  1734. +                  need to be pushed at the the function prologue,
  1735. +                  thus corrupting the calculations of stack slots
  1736. +                  previously performed at the reload phase. */
  1737. +               && (call_used_regs[regno + i]
  1738. +                   || regs_ever_live[regno + i])
  1739. +              )
  1740. +            continue;
  1741. +          else
  1742. +            found = 0;
  1743. +        }  /* for (i = 0; i < nregs; i++) */
  1744. +          if (found)
  1745. +        {
  1746. +          /* save regno for the next invokation */
  1747. +          last_reg = regno + nregs - 1;
  1748. +
  1749. +          return (regno);
  1750. +        }
  1751. +        } /* for (regno = (last_reg + 1) % FIRST_PSEUDO_REG;
  1752. +             regno != last_reg;
  1753. +             regno = (regno + 1) % FIRST_PSEUDO_REG) */
  1754. +    }  /* for (not_desired = 0; not_desired < 2; not_desired ++) */
  1755. +      break;
  1756. +    }  /* switch (mode) */
  1757. +  return (FIRST_PSEUDO_REGISTER);
  1758. +}
  1759. +
  1760. +/* Updates the free_regs regset according the contents of PAT */
  1761. +
  1762. +void
  1763. +update_free_regs (rtx pat)
  1764. +{
  1765. +  register int i, regno, nregs;
  1766. +  register j;
  1767. +  register char *fmt;
  1768. +  register RTX_CODE code = GET_CODE (pat);
  1769. +
  1770. +  switch (code)
  1771. +    {
  1772. +      case SET:
  1773. +      case USE:
  1774. +      case CLOBBER:
  1775. +        if (GET_CODE (SET_DEST (pat)) == REG)
  1776. +          {
  1777. +            regno = REGNO (SET_DEST (pat));
  1778. +            nregs = HARD_REGNO_NREGS (regno,
  1779. +                                   GET_MODE (SET_DEST (pat)));
  1780. +
  1781. +            if (GET_CODE (pat) == SET
  1782. +                || GET_CODE (pat) == USE)
  1783. +              for (i = 0; i < nregs; i++)
  1784. +                CLEAR_HARD_REG_BIT (free_regs, regno + i);
  1785. +#if 0
  1786. +            else /* GET_CODE (pat) == CLOBBER */
  1787. +              for (i = 0; i < nregs; i++)
  1788. +                SET_HARD_REG_BIT (free_regs, regno + i);
  1789. +#endif
  1790. +          }
  1791. +        else if (GET_CODE (SET_DEST (pat)) == SUBREG
  1792. +                 && GET_CODE (SUBREG_REG (SET_DEST (pat))) == REG)
  1793. +          {
  1794. +            regno = REGNO (SUBREG_REG (SET_DEST (pat))) 
  1795. +                         + SUBREG_WORD (SET_DEST (pat));
  1796. +            nregs = HARD_REGNO_NREGS (regno,
  1797. +                                   GET_MODE (SET_DEST (pat)));
  1798. +
  1799. +            if (GET_CODE (pat) == SET
  1800. +                || GET_CODE (pat) == USE)
  1801. +              for (i = 0; i < nregs; i++)
  1802. +                CLEAR_HARD_REG_BIT (free_regs, regno + i);
  1803. +          }
  1804. +        break;
  1805. +      case ADDR_VEC:
  1806. +      case CALL:
  1807. +      case HIGH:
  1808. +      case CONST_INT:
  1809. +      case CONST:
  1810. +      case CONST_DOUBLE:
  1811. +      case SYMBOL_REF:
  1812. +      case LABEL_REF:
  1813. +      case PC:
  1814. +      case CC0:
  1815. +      case REG:
  1816. +        /* do nothing */
  1817. +        return;
  1818. +   }  /* switch (GET_CODE (pat)) */
  1819. +
  1820. +  fmt = GET_RTX_FORMAT (code);
  1821. +  for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
  1822. +    if (fmt[i] == 'e')
  1823. +      {
  1824. +        if( XEXP (pat, i))
  1825. +          update_free_regs (XEXP (pat, i));
  1826. +      }
  1827. +    else if (fmt[i] == 'E' || fmt[i] == 'V')
  1828. +      {
  1829. +    for (j = 0; j < XVECLEN (pat, i); j++)
  1830. +      update_free_regs (XVECEXP (pat, i, j));
  1831. +      }
  1832. +}
  1833. +
  1834. +#if 0
  1835. +/* Returns a hard register regno, if the contents of entry regno in
  1836. +   last_reloads array equals to MEM, FIRST_PSEUDO_REGISTER otherwise. */
  1837. +
  1838. +static int
  1839. +find_last_reload (rtx mem)
  1840. +{
  1841. +  register int regno;
  1842. +  
  1843. +  if (GET_CODE (mem) != MEM)
  1844. +    abort ();
  1845. +
  1846. +  for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
  1847. +    if (rtx_equal_p (LAST_RELOAD (regno), mem))
  1848. +      return (regno);
  1849. +
  1850. +  return (FIRST_PSEUDO_REGISTER);
  1851. +}
  1852. +#endif
  1853. +
  1854. +/* Returns regno of a free register holding MEM, or FIRST_PSEUDO_REGISTER if
  1855. +   not exist such register. */
  1856. +
  1857. +static int
  1858. +find_regno_holds_mem (rtx mem, enum machine_mode mode)
  1859. +{
  1860. +  int i, is_const;
  1861. +  MEM_HOLDER *mhp;
  1862. +
  1863. +  is_const = GET_CODE (mem) == CONST_INT;
  1864. +  
  1865. +  for (mhp = regno_holds_mem;
  1866. +       mhp < regno_holds_mem + FIRST_PSEUDO_REGISTER;
  1867. +       mhp++)
  1868. +    {
  1869. +      if (mhp->mem && GET_CODE (mhp->insn_load) == NOTE)
  1870. +        { /* was deleted */
  1871. +          mhp->insn_load = NULL;
  1872. +          mhp->mem = NULL;
  1873. +          mhp->insn_dead = NULL;
  1874. +        }
  1875. +      if (mhp->insn_store && GET_CODE (mhp->insn_store) == NOTE)
  1876. +        { /* was deleted */
  1877. +          mhp->insn_store = NULL;
  1878. +        }
  1879. +#if 0
  1880. +      if ((mhp->insn_load 
  1881. +           && mhp->mem
  1882. +#endif
  1883. +      if ((mhp->mem
  1884. +           && GET_CODE (mhp -> mem) == GET_CODE (mem)
  1885. +           && (is_const 
  1886. +                ? rtx_equal_p ( (mhp -> mem), (mem))
  1887. +                : rtx_equal_p (XEXP (mhp -> mem, 0), XEXP (mem, 0)))
  1888. +           && HARD_REGNO_MODE_OK (mhp - regno_holds_mem, mode)
  1889. +           && GET_MODE_SIZE (GET_MODE (SET_DEST (PATTERN (mhp -> insn_load))))
  1890. +               >= GET_MODE_SIZE (mode))
  1891. +      || (mhp -> mem
  1892. +          && mhp -> insn_store
  1893. +              && GET_MODE_SIZE (GET_MODE (SET_SRC (PATTERN (mhp -> insn_store))))
  1894. +                   >= GET_MODE_SIZE (mode)
  1895. +              && GET_CODE (SET_DEST ( PATTERN (mhp -> insn_store))) 
  1896. +                   == GET_CODE (mem)
  1897. +              && HARD_REGNO_MODE_OK (mhp - regno_holds_mem, mode)
  1898. +              && (is_const
  1899. +                  ? rtx_equal_p (SET_DEST ( PATTERN (mhp -> insn_store)), 
  1900. +                                 mem)
  1901. +                  : rtx_equal_p (XEXP (SET_DEST (PATTERN (mhp -> insn_store)),
  1902. +                                 0),
  1903. +                                 XEXP (mem, 0)))))
  1904. +        return (mhp - regno_holds_mem);
  1905. +    }
  1906. +  return FIRST_PSEUDO_REGISTER;
  1907. +}  /* find_regno_holds_mem (rtx mem) */
  1908. +
  1909. +
  1910. +
  1911. +/* Updates the regno_holds_mem array as required from pat */
  1912. +
  1913. +static void
  1914. +update_regno_holds_mem (rtx insn, rtx pat)
  1915. +{
  1916. +  register int i, j, regno, nregs;
  1917. +  MEM_HOLDER *mhp;
  1918. +  rtx set_src, set_dest;
  1919. +  register char *fmt;
  1920. +  register RTX_CODE code = GET_CODE (pat);
  1921. +
  1922. +  if (GET_CODE (insn) == JUMP_INSN)
  1923. +    {
  1924. +      for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
  1925. +        regno_holds_mem[i].insn_store = 0;
  1926. +      return;
  1927. +    }
  1928. +
  1929. +  switch (GET_CODE (pat))
  1930. +    {
  1931. +      case SET:
  1932. +        set_src = SET_SRC (pat);
  1933. +        set_dest = SET_DEST (pat);
  1934. +        if (GET_CODE (set_dest) == REG)
  1935. +          {
  1936. +            regno = REGNO (set_dest);
  1937. +            nregs = HARD_REGNO_NREGS (regno, GET_MODE (set_dest));
  1938. +
  1939. +            mhp = ®no_holds_mem[regno];
  1940. +            if (nregs == 1
  1941. +                && (GET_CODE (set_src) == MEM
  1942. +                    && !MEM_VOLATILE_P (set_src)
  1943. +                    && GET_CODE (XEXP (set_src, 0)) != PRE_INC
  1944. +                    && GET_CODE (XEXP (set_src, 0)) != PRE_DEC
  1945. +                    && GET_CODE (XEXP (set_src, 0)) != POST_INC
  1946. +                    && GET_CODE (XEXP (set_src, 0)) != POST_DEC)
  1947. +                   || GET_CODE (set_src) == CONST_INT)
  1948. +              {
  1949. +                mhp -> mem = set_src;
  1950. +                mhp -> insn_load = insn;
  1951. +                mhp -> insn_store = mhp -> insn_dead = 0;
  1952. +              }
  1953. +            else
  1954. +              {
  1955. +                for (; mhp < ®no_holds_mem[regno] + nregs; mhp++)
  1956. +                  {
  1957. +                    bzero (mhp, sizeof (MEM_HOLDER));
  1958. +                  }
  1959. +              }
  1960. +            if (nregs == 1)
  1961. +              {
  1962. +                /* since we set a register, each mem using this reg is not valid
  1963. +                   any more */
  1964. +
  1965. +                update_entries (set_dest);
  1966. +              }
  1967. +            else
  1968. +              {
  1969. +                /* memory holds more than one register. This is a simplification
  1970. +                   Actually we should zero only those register entries which are
  1971. +                   relevant for nregs... */
  1972. +                bzero (regno_holds_mem, sizeof regno_holds_mem);
  1973. +                break;
  1974. +              }
  1975. +            update_regno_holds_mem (insn, set_src);
  1976. +          }
  1977. +        else if (GET_CODE (set_dest) == SUBREG)
  1978. +          {
  1979. +            if (GET_CODE (SUBREG_REG (set_dest)) == REG)
  1980. +              {
  1981. +                regno = REGNO (SUBREG_REG (set_dest)) + SUBREG_WORD (set_dest);
  1982. +                nregs 
  1983. +                  = HARD_REGNO_NREGS (regno, GET_MODE (SUBREG_REG (set_dest)));
  1984. +
  1985. +                mhp = ®no_holds_mem[regno];
  1986. +                for (; mhp < ®no_holds_mem[regno] + nregs; mhp++)
  1987. +                  {
  1988. +                    bzero (mhp, sizeof (MEM_HOLDER));
  1989. +                  }
  1990. +                if (nregs == 1)
  1991. +                  {
  1992. +                    update_entries (SUBREG_REG (set_dest));
  1993. +                  }
  1994. +                else
  1995. +                  {
  1996. +                    /* memory holds more than one register. This is a simplification.
  1997. +                       Actually we should zero only those register entries which are
  1998. +                       relevant for nregs... */
  1999. +                    bzero (regno_holds_mem, sizeof regno_holds_mem);
  2000. +                  }
  2001. +                update_regno_holds_mem (insn, set_src);
  2002. +                return;
  2003. +              }
  2004. +            else /* subreg of mem */
  2005. +              {
  2006. +            for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
  2007. +              regno_holds_mem[i].mem = 0;
  2008. +                update_regno_holds_mem (insn, XEXP (XEXP (set_dest, 0), 0));
  2009. +                update_regno_holds_mem (insn, set_src);
  2010. +                return;
  2011. +              }
  2012. +          }
  2013. +        else if (GET_CODE (set_dest) == MEM)
  2014. +          {
  2015. +        MEM_HOLDER save_mh;
  2016. +        int is_push = 0;
  2017. +
  2018. +        mhp = 0;
  2019. +
  2020. +            if ((GET_CODE (set_src) == REG
  2021. +                 || GET_CODE (set_src) == CONST_INT)
  2022. +                && push_operand (set_dest, Pmode))
  2023. +              { /* A push only ruins memory references based on stack_pointer */
  2024. +                is_push = 1;
  2025. +              }
  2026. +            else if (GET_CODE (set_src) == REG
  2027. +                /* We might want to add the possibility of SUBREG, isn't it? */
  2028. +                && !MEM_VOLATILE_P (set_dest)
  2029. +                && GET_CODE (XEXP (set_dest, 0)) != PRE_INC
  2030. +                && GET_CODE (XEXP (set_dest, 0)) != PRE_DEC
  2031. +                && GET_CODE (XEXP (set_dest, 0)) != POST_INC
  2032. +                && GET_CODE (XEXP (set_dest, 0)) != POST_DEC)
  2033. +              {
  2034. +                register int regno = REGNO (set_src);
  2035. +                register int nregs = HARD_REGNO_NREGS (regno,
  2036. +                                       GET_MODE (set_src));
  2037. +
  2038. +                if (nregs == 1)
  2039. +                  {
  2040. +                    mhp = ®no_holds_mem[regno];
  2041. +                    save_mh = *mhp;
  2042. +                  }
  2043. +              }
  2044. +            else if (GET_CODE (set_src) != REG)
  2045. +              update_regno_holds_mem (insn, set_src);
  2046. +
  2047. +            if (!is_push)
  2048. +              {
  2049. +                MEM_HOLDER *p = regno_holds_mem;
  2050. +                rtx store_pat;
  2051. +                
  2052. +            for (; p < regno_holds_mem + FIRST_PSEUDO_REGISTER; p++)
  2053. +              {
  2054. +                if (p -> mem)
  2055. +                  {
  2056. +                    if (GET_CODE (p -> mem) == MEM
  2057. +                        && true_dependence (set_dest, p -> mem))
  2058. +                      {
  2059. +                        p -> mem = 0;
  2060. +                      }
  2061. +                  }
  2062. +                if (p -> insn_store
  2063. +                    && (store_pat = PATTERN (p -> insn_store))
  2064. +                    && GET_CODE (SET_DEST (store_pat)) == MEM
  2065. +                    && true_dependence (set_dest,
  2066. +                                    SET_DEST (store_pat)))
  2067. +                  {
  2068. +                    /* insn_store is not valid any more */
  2069. +                    p -> insn_store = 0;
  2070. +                  }
  2071. +              }
  2072. +          }
  2073. +
  2074. +            if (mhp)
  2075. +              {
  2076. +                /* restore the relevant entry */
  2077. +        *mhp = save_mh;
  2078. +        mhp -> insn_store = insn;
  2079. +
  2080. +        /* if there was no load, we can consider this insn as if it is a
  2081. +           load */
  2082. +        if (! mhp -> insn_load || GET_CODE (mhp -> insn_load) == NOTE)
  2083. +          {
  2084. +            mhp -> insn_load = insn;
  2085. +            mhp -> mem = set_dest;
  2086. +          }
  2087. +          }
  2088. +              update_regno_holds_mem (insn, XEXP (set_dest, 0));
  2089. +          }
  2090. +        else
  2091. +          {
  2092. +            update_regno_holds_mem (insn, set_dest);
  2093. +            update_regno_holds_mem (insn, set_src);
  2094. +          }
  2095. +        return;
  2096. +      case CLOBBER:
  2097. +    set_dest = SET_DEST (pat);
  2098. +        if (GET_CODE (set_dest) == REG)
  2099. +          {
  2100. +            register int regno = REGNO (set_dest);
  2101. +            register int nregs = HARD_REGNO_NREGS (regno,
  2102. +                                   GET_MODE (set_dest));
  2103. +
  2104. +        if (nregs == 1)
  2105. +          {
  2106. +            bzero (®no_holds_mem[regno], sizeof (MEM_HOLDER));
  2107. +            update_entries (set_dest);
  2108. +              }
  2109. +            else
  2110. +              /* memory holds more than one register. This is a simplification.
  2111. +                 Actually we should zero only those register entries which are
  2112. +                 relevant for nregs... */
  2113. +              bzero (regno_holds_mem, sizeof regno_holds_mem);
  2114. +          }
  2115. +        else if (GET_CODE (set_dest) == SUBREG)
  2116. +          {
  2117. +            regno = REGNO (SUBREG_REG (set_dest));
  2118. +            nregs = HARD_REGNO_NREGS (regno, GET_MODE (XEXP (set_dest, 0)));
  2119. +
  2120. +            mhp = ®no_holds_mem[regno];
  2121. +            for (; mhp < ®no_holds_mem[regno] + nregs; mhp++)
  2122. +              {
  2123. +                bzero (mhp, sizeof (MEM_HOLDER));
  2124. +              }
  2125. +            if (nregs == 1)
  2126. +              {
  2127. +                update_entries (XEXP (set_dest, 0));
  2128. +              }
  2129. +            else
  2130. +              {
  2131. +                /* memory holds more than one register. This is a simplification.
  2132. +                   Actually we should zero only those register entries which are
  2133. +                   relevant for nregs... */
  2134. +                bzero (regno_holds_mem, sizeof regno_holds_mem);
  2135. +              }
  2136. +            return;
  2137. +          }
  2138. +        else if (GET_CODE (set_dest) == MEM)
  2139. +          for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
  2140. +            {
  2141. +              /* the mem field indicates that this regno is no more valid for
  2142. +                 replacement in loads. Note that this regno might be valid for
  2143. +                 redundant store, or even replace loads with memory to which
  2144. +                 this reg was writing in the insn_store, and in such case we
  2145. +                 would like to reset the risc flags on all insns, from insn_load
  2146. +                 to insn_dead. This is why we don't reset here insn_load and
  2147. +                 insn_dead. */
  2148. +          if (regno_holds_mem[i].mem
  2149. +              && GET_CODE (regno_holds_mem[i].mem) == MEM
  2150. +              && true_dependence (set_dest, regno_holds_mem[i].mem))
  2151. +                regno_holds_mem[i].mem = 0;
  2152. +            }
  2153. +        else
  2154. +          {
  2155. +            fprintf (stderr,
  2156. +                     "unpredicted case caused reset of regno_holds_mem:\n");
  2157. +            fprintf (stderr, "pattern:\n");
  2158. +            debug_rtx (pat);
  2159. +            fprintf (stderr, "insn:\n");
  2160. +        debug_rtx (insn);
  2161. +        bzero (regno_holds_mem, sizeof regno_holds_mem);
  2162. +      }
  2163. +        return;
  2164. +      case CALL:
  2165. +        /* since we cannot know what writes to memory in the function call,
  2166. +           we must not use the information in regno_holds_mem anymore */
  2167. +
  2168. +    bzero (regno_holds_mem, sizeof regno_holds_mem);
  2169. +        return;
  2170. +      case PRE_DEC:
  2171. +      case PRE_INC:
  2172. +      case POST_DEC:
  2173. +      case POST_INC:
  2174. +        if (GET_CODE (XEXP (pat, 0)) == REG)
  2175. +          {
  2176. +            bzero (®no_holds_mem[REGNO (XEXP (pat,0))], sizeof (MEM_HOLDER));
  2177. +        update_entries (XEXP (pat, 0));
  2178. +          }
  2179. +        else
  2180. +          {
  2181. +            update_regno_holds_mem (insn, XEXP (pat, 0));
  2182. +          }
  2183. +        return;
  2184. +      case MEM:
  2185. +        /* there is a use of a memory in this insn, we cannot trust the
  2186. +           insn_store data anymore */
  2187. +        for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
  2188. +          {
  2189. +            regno_holds_mem[i].insn_store = 0;
  2190. +            if (regno_holds_mem[i].insn_load == NULL)
  2191. +              {
  2192. +                regno_holds_mem[i].insn_dead = 0;
  2193. +                regno_holds_mem[i].mem = NULL;
  2194. +              }
  2195. +          }
  2196. +        update_regno_holds_mem (insn, XEXP (pat, 0));
  2197. +        return;
  2198. +      case USE:
  2199. +        update_regno_holds_mem (insn, SET_DEST (pat));
  2200. +        return;
  2201. +    case HIGH:
  2202. +    case CONST_INT:
  2203. +    case CONST:
  2204. +    case CONST_DOUBLE:
  2205. +    case SYMBOL_REF:
  2206. +    case LABEL_REF:
  2207. +    case PC:
  2208. +    case CC0:
  2209. +    case REG:
  2210. +    /*case SUBREG:*/
  2211. +        /* do nothing */
  2212. +        return;
  2213. +  }  /* switch (GET_CODE (pat)) */
  2214. +
  2215. +  fmt = GET_RTX_FORMAT (code);
  2216. +  for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
  2217. +    if (fmt[i] == 'e')
  2218. +      {
  2219. +        if( XEXP (pat, i))
  2220. +          update_regno_holds_mem (insn, XEXP (pat, i));
  2221. +      }
  2222. +    else if (fmt[i] == 'E' || fmt[i] == 'V')
  2223. +      {
  2224. +    for (j = 0; j < XVECLEN (pat, i); j++)
  2225. +      update_regno_holds_mem (insn, XVECEXP (pat, i, j));
  2226. +      }
  2227. +}  /* update_regno_holds_mem (rtx pat) */
  2228. +
  2229. +
  2230. +
  2231. +
  2232. +/* Invalidates entries of memory mentioning REG in their memories, and the
  2233. +   entry of the appropriate REG */
  2234. +
  2235. +static void
  2236. +update_entries (rtx reg)
  2237. +{
  2238. +  register MEM_HOLDER *mhp = regno_holds_mem;
  2239. +  register int regno = REGNO (reg);
  2240. +
  2241. +  for (; mhp < regno_holds_mem + FIRST_PSEUDO_REGISTER; mhp++)
  2242. +    {
  2243. +      if (mhp->mem && reg_overlap_mentioned_p (reg, mhp->mem))
  2244. +        {
  2245. +          if (mhp->insn_store && mhp->insn_store != mhp->insn_load)
  2246. +            {
  2247. +              mhp -> insn_load = mhp -> insn_store;
  2248. +              mhp -> mem = SET_DEST (PATTERN (mhp -> insn_load));
  2249. +              mhp -> insn_dead = 0;
  2250. +            }
  2251. +          else
  2252. +            bzero (mhp, sizeof (MEM_HOLDER));
  2253. +        }
  2254. +      if (mhp -> insn_store && GET_CODE (mhp -> insn_store) == INSN
  2255. +          /* insn_store can be deleted by redundant store elimination */
  2256. +          && reg_overlap_mentioned_p (reg, 
  2257. +                                      SET_DEST (PATTERN (mhp->insn_store))))
  2258. +        {
  2259. +          if (mhp->insn_load == mhp->insn_store)
  2260. +           {
  2261. +              bzero (mhp, sizeof (MEM_HOLDER));
  2262. +           }
  2263. +          else
  2264. +           {
  2265. +             mhp -> insn_store = 0;
  2266. +           }
  2267. +        }
  2268. +    }  /* for (; mhp < regno_holds_mem + FIRST_PSEUDO_REGISTER; mhp++) */
  2269. +}  /* update_entries (rtx reg) */
  2270. +
  2271. +
  2272. +
  2273. +/* for each regno found to be non-free (is used or set) from (and including)
  2274. +   FIRST, to LAST, clears the appropriate bit in HARD_REG_SET pointed to by
  2275. +   FREE. */
  2276. +   
  2277. +void
  2278. +find_free_regs_between (free, first, last)
  2279. +    HARD_REG_SET *free;
  2280. +    rtx first;
  2281. +    rtx last;
  2282. +
  2283. +{
  2284. +  rtx insn, pat;
  2285. +  char *funcname = "find_free_regs_between";
  2286. +  register int i;
  2287. +
  2288. +
  2289. +  if (! first)
  2290. +    abort ();
  2291. +  if (! last)
  2292. +    abort ();
  2293. +
  2294. +  insn = first;
  2295. +  while (insn
  2296. +         && insn != last)
  2297. +    {
  2298. +      if (GET_RTX_CLASS (GET_CODE (insn)) == 'i')
  2299. +        {
  2300. +          if (GET_CODE (insn) == CALL_INSN)
  2301. +            {
  2302. +              /* we should reset all regs clobbered by a call */
  2303. +              for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
  2304. +            if (call_used_regs[i])
  2305. +          CLEAR_HARD_REG_BIT (*free, i);
  2306. +        }
  2307. +      else  /* GET_RTX_CLASS (GET_CODE (insn)) != 'i' */
  2308. +        {
  2309. +          pat = PATTERN (insn);
  2310. +              for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
  2311. +        if (INSN_SETS_REGNO (insn, i)
  2312. +            || INSN_USES_REGNO (insn, i))
  2313. +              CLEAR_HARD_REG_BIT (*free, i);
  2314. +        }
  2315. +        } /* if (GET_RTX_CLASS (GET_CODE (insn)) == 'i') */
  2316. +      insn = NEXT_INSN (insn);
  2317. +    }
  2318. +  if (insn != last)
  2319. +    fprintf (stderr, "%s (): didn't encounterd last!\n", funcname);
  2320. +  
  2321. +}
  2322. +
  2323. +/* removes a previous store of MEM if found, and returns INSN_UID of the insn
  2324. +   deleted. Otherwise returns 0. */
  2325. +static int
  2326. +remove_redundant_store (rtx mem, int block)
  2327. +{
  2328. +  rtx t_insn;
  2329. +  int regno;
  2330. +
  2331. +  for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
  2332. +    if ((t_insn = regno_holds_mem[regno].insn_store)
  2333. +    && GET_CODE (t_insn) == INSN
  2334. +        && rtx_equal_p (SET_DEST (PATTERN (t_insn)), mem))
  2335. +      {
  2336. +        if (basic_block_head[block] == t_insn)
  2337. +          basic_block_head[block] = NEXT_INSN (t_insn);
  2338. +        PUT_CODE (t_insn, NOTE);
  2339. +        NOTE_LINE_NUMBER (t_insn) = NOTE_INSN_DELETED;
  2340. +        NOTE_SOURCE_FILE (t_insn) = 0;
  2341. +
  2342. +        /* if the insn we have just deleted, was preceded with one or two risc
  2343. +           additions (i.e. memory_simplify added insns before it), and they are
  2344. +           not used for anything else, remove them as well */
  2345. +        if (RTX_IS_RISC_P (PREV_INSN (t_insn)))
  2346. +          {
  2347. +            PUT_CODE (PREV_INSN (t_insn), NOTE);
  2348. +            NOTE_LINE_NUMBER (PREV_INSN (t_insn)) = NOTE_INSN_DELETED;
  2349. +            NOTE_SOURCE_FILE (PREV_INSN (t_insn)) = 0;
  2350. +            if (RTX_IS_RISC_P (PREV_INSN (PREV_INSN (t_insn))))
  2351. +              {
  2352. +                PUT_CODE (PREV_INSN (PREV_INSN (t_insn)), NOTE);
  2353. +                NOTE_LINE_NUMBER (PREV_INSN (PREV_INSN (t_insn)))
  2354. +                                        = NOTE_INSN_DELETED;
  2355. +                NOTE_SOURCE_FILE (PREV_INSN (PREV_INSN (t_insn))) = 0;
  2356. +              }
  2357. +          }
  2358. +           
  2359. +        return INSN_UID (t_insn);
  2360. +      }
  2361. +  return 0;
  2362. +}  /* remove_redundant_store (rtx mem) */
  2363. +
  2364. +/* intel2 - end */
  2365. +/* intel1 */
  2366. +
  2367. +/*
  2368. +  Try to eliminate unnecessary reg to reg moves, and also
  2369. +  if the destination is a register try to use that register
  2370. +  as one of the sources.  
  2371. +
  2372. +  EXAMPLE:
  2373. +
  2374. +(insn 618 614 616 (set (reg:SI %eax)
  2375. +        (mem/s:SI (plus:SI (mult:SI (reg/v:SI %ebx)
  2376. +                    (const_int 4))
  2377. +                (reg:SI %esi)))) -1 (nil)
  2378. +    (nil))
  2379. +
  2380. +(insn 616 618 59 (set (reg:SI %esi)
  2381. +        (mem:SI (plus:SI (reg:SI %esp)
  2382. +                (const_int 36)))) -1 (nil)
  2383. +    (nil))
  2384. +
  2385. +(insn:HI 59 616 60 (set (reg:SI %eax)
  2386. +        (ior:SI (reg:SI %eax)
  2387. +            (mem/s:SI (plus:SI (mult:SI (reg/v:SI %ebx)
  2388. +                        (const_int 4))
  2389. +                    (reg:SI %esi))))) 105 {iorsi3} (nil)
  2390. +    (nil))
  2391. +
  2392. +(insn 60 59 620 (set (reg:SI %eax)
  2393. +        (not:SI (reg:SI %eax))) 130 {one_cmplsi2} (insn_list 59 (nil))
  2394. +        (nil))
  2395. +
  2396. +(insn 620 60 61 (set (reg/v:SI %ecx)
  2397. +        (reg:SI %eax)) -1 (nil)
  2398. +    (expr_list:REG_DEAD (reg:SI %eax)
  2399. +    (nil)))
  2400. +
  2401. +WILL BECOME:
  2402. +
  2403. +(insn 618 614 616 (set (reg:SI %ecx)
  2404. +        (mem/s:SI (plus:SI (mult:SI (reg/v:SI %ebx)
  2405. +                    (const_int 4))
  2406. +                (reg:SI %esi)))) -1 (nil)
  2407. +    (nil))
  2408. +
  2409. +(insn 616 618 59 (set (reg:SI %esi)
  2410. +        (mem:SI (plus:SI (reg:SI %esp)
  2411. +                (const_int 36)))) -1 (nil)
  2412. +    (nil))
  2413. +
  2414. +(insn:HI 59 616 60 (set (reg:SI %ecx)
  2415. +        (ior:SI (reg:SI %ecx)
  2416. +            (mem/s:SI (plus:SI (mult:SI (reg/v:SI %ebx)
  2417. +                        (const_int 4))
  2418. +                    (reg:SI %esi))))) 105 {iorsi3} (nil)
  2419. +    (nil))
  2420. +
  2421. +(insn 60 59 620 (set (reg:SI %ecx)
  2422. +        (not:SI (reg:SI %ecx))) 130 {one_cmplsi2} (insn_list 59 (nil))
  2423. +        (nil))
  2424. +
  2425. +(note 620 60 61 "" NOTE_INSN_DELETED)
  2426. +
  2427. +
  2428. +The trigger for the optimization is:
  2429. +
  2430. +(insn 620 60 61 (set (reg/v:SI %ecx)
  2431. +        (reg:SI %eax)) -1 (nil)
  2432. +    (expr_list:REG_DEAD (reg:SI %eax)
  2433. +    (nil)))
  2434. +
  2435. +*/
  2436. +void
  2437. +reg_to_reg_copy_opt (f, file)
  2438. +     rtx f;
  2439. +     FILE *file;
  2440. +{
  2441. +  rtx this_insn, regx, note, src;
  2442. +  int regno, success, length, i;
  2443. +  char * fmt;
  2444. +
  2445. +  if (file)
  2446. +    {
  2447. +      fprintf (file, "\n\ndoing reg to reg copy opt\n");
  2448. +    }
  2449. +  hard_reg_flow_analysis (f, NULL, 1);
  2450. +  this_insn = f;
  2451. +  while (this_insn)
  2452. +    {
  2453. +      if (GET_CODE (this_insn) == INSN 
  2454. +          && GET_CODE (PATTERN (this_insn)) == SET
  2455. +          && GET_CODE (SET_DEST (PATTERN (this_insn))) == REG
  2456. +          && GET_CODE (SET_SRC (PATTERN (this_insn))) == REG
  2457. +          && REGNO (SET_SRC (PATTERN (this_insn))) 
  2458. +             != REGNO (SET_DEST (PATTERN (this_insn))) 
  2459. +          && GET_MODE (SET_SRC (PATTERN (this_insn))) 
  2460. +             == GET_MODE (SET_DEST (PATTERN (this_insn))) 
  2461. +          && find_regno_note (this_insn, REG_DEAD, 
  2462. +                              REGNO (SET_SRC (PATTERN (this_insn))))
  2463. +         )
  2464. +        {
  2465. +          success = try_backwards_replace (SET_DEST (PATTERN (this_insn)), 
  2466. +                                 SET_SRC (PATTERN (this_insn)),
  2467. +                                 this_insn, 1, file);
  2468. +          if (!success)
  2469. +            {
  2470. +               success = try_forwards_replace (SET_DEST (PATTERN (this_insn)), 
  2471. +                                 SET_SRC (PATTERN (this_insn)),
  2472. +                                 this_insn, file);
  2473. +            }
  2474. +        }
  2475. +      else if (GET_CODE (this_insn) == INSN 
  2476. +               && GET_CODE (PATTERN (this_insn)) == SET
  2477. +               && GET_CODE (SET_DEST (PATTERN (this_insn))) == REG
  2478. +               && GET_CODE (SET_SRC (PATTERN (this_insn))) == SUBREG
  2479. +               && REGNO (SET_DEST (PATTERN (this_insn))) 
  2480. +                  != REGNO (SUBREG_REG (SET_SRC (PATTERN (this_insn))))
  2481. +               && SUBREG_WORD (SET_SRC (PATTERN (this_insn))) == 0
  2482. +               && GET_MODE (SET_SRC (PATTERN (this_insn))) 
  2483. +                  == GET_MODE (SET_DEST (PATTERN (this_insn))) 
  2484. +               && (note = find_regno_note (this_insn, REG_DEAD, 
  2485. +                                   REGNO (SUBREG_REG (SET_SRC (PATTERN (this_insn))))))
  2486. +               && rtx_equal_p (XEXP (note, 0), 
  2487. +                               SUBREG_REG (SET_SRC (PATTERN (this_insn))))
  2488. +               && HARD_REGNO_NREGS (REGNO (SET_DEST (PATTERN (this_insn))),
  2489. +                                GET_MODE (SUBREG_REG (SET_SRC (PATTERN (this_insn)))))
  2490. +                   ==
  2491. +                  HARD_REGNO_NREGS (REGNO (SET_DEST (PATTERN (this_insn))),
  2492. +                            GET_MODE (SET_DEST (PATTERN (this_insn))))
  2493. +               && HARD_REGNO_NREGS (REGNO (SET_DEST (PATTERN (this_insn))),
  2494. +                            GET_MODE (SET_DEST (PATTERN (this_insn))))
  2495. +                   == 1
  2496. +               && HARD_REGNO_MODE_OK (REGNO (SET_DEST (PATTERN (this_insn))) ,
  2497. +                                      GET_MODE (SUBREG_REG (SET_SRC (PATTERN (this_insn)))))
  2498. +              )
  2499. +        {
  2500. +          regx = gen_rtx (REG, 
  2501. +                          GET_MODE (SUBREG_REG (SET_SRC (PATTERN (this_insn)))),
  2502. +                          REGNO (SET_DEST (PATTERN (this_insn))));
  2503. +          success 
  2504. +           = try_backwards_replace (regx,
  2505. +                                 SUBREG_REG (SET_SRC (PATTERN (this_insn))),
  2506. +                                 this_insn, 1, file);
  2507. +          if (!success)
  2508. +            {
  2509. +              success 
  2510. +               = try_forwards_replace (SET_DEST (PATTERN (this_insn)),
  2511. +                                 SET_SRC (PATTERN (this_insn)),
  2512. +                                 this_insn, file);
  2513. +            }
  2514. +        }
  2515. +      else if (GET_CODE (this_insn) == INSN 
  2516. +          && GET_CODE (PATTERN (this_insn)) == SET
  2517. +          && GET_CODE (SET_DEST (PATTERN (this_insn))) == REG
  2518. +          && GET_CODE (SET_SRC (PATTERN (this_insn))) != MEM
  2519. +          && GET_CODE (SET_SRC (PATTERN (this_insn))) != SUBREG
  2520. +          && !reg_overlap_mentioned_p (SET_DEST (PATTERN (this_insn)),
  2521. +                                       SET_SRC (PATTERN (this_insn)))
  2522. +          )
  2523. +        {
  2524. +          src = SET_SRC (PATTERN (this_insn));
  2525. +          fmt = GET_RTX_FORMAT (GET_CODE (src));
  2526. +          length = GET_RTX_LENGTH (GET_CODE (src));
  2527. +          for (i=0; i<length; i++)
  2528. +            {
  2529. +              if (fmt[i] == 'e' 
  2530. +                  && GET_CODE (XEXP (src, i)) == SUBREG)
  2531. +                {  /* Makes matters too complex.  */
  2532. +                  return;
  2533. +                }
  2534. +            }
  2535. +          for (i=0; i<length; i++)
  2536. +            {
  2537. +              if (fmt[i] == 'e' 
  2538. +                  && GET_CODE (XEXP (src, i)) == REG
  2539. +                  && (note = find_regno_note (this_insn, REG_DEAD,
  2540. +                                              REGNO (XEXP (src, i))))
  2541. +                  && rtx_equal_p (XEXP (src, i), XEXP (note, 0))
  2542. +                  )
  2543. +                { /* One of the sources dies in this insn -
  2544. +                     see if the destination register can be used
  2545. +                     to replace that register.  This has a chance
  2546. +                     of producing better code e.g. reg1 <- reg1 AND reg3
  2547. +                     produces more efficient code than 
  2548. +                     reg1 <- reg2 AND reg3.  */
  2549. +                  rtx regx, regy;
  2550. +                  regy = XEXP (src, i);
  2551. +                  regx = SET_DEST (PATTERN (this_insn));
  2552. +                  if (reg_overlap_mentioned_p (regx, PATTERN (this_insn)))
  2553. +                    {
  2554. +                      break;
  2555. +                    }
  2556. +                  if (GET_MODE (regx) != GET_MODE (regy))
  2557. +                    {
  2558. +                      if (HARD_REGNO_NREGS (REGNO (regx), GET_MODE (regy)) != 1
  2559. +                          || 
  2560. +                          !(HARD_REGNO_MODE_OK (REGNO (regx), GET_MODE (regy))))
  2561. +                        {
  2562. +                          continue;
  2563. +                        }
  2564. +                      regx = gen_rtx (REG, GET_MODE (regy), REGNO (regx)); 
  2565. +                    }
  2566. +                  if (try_backwards_replace (regx, regy, this_insn, 0, file))
  2567. +                    {
  2568. +                      remove_note (this_insn, note);
  2569. +                      break; /* Since now the dest reg is 
  2570. +                                mentioned in the src.  */
  2571. +                    }
  2572. +                }
  2573. +            }
  2574. +
  2575. +        }
  2576. +      this_insn = NEXT_INSN (this_insn);
  2577. +    }
  2578. +  if (file)
  2579. +    {
  2580. +      fprintf (file, "\n");
  2581. +    }
  2582. +}
  2583. +
  2584. +/*
  2585. +  insn is of the form
  2586. +     regx <- regy (regy dead)
  2587. +   or
  2588. +     regx <- SUBREG (regy) (regy dead)
  2589. +   or
  2590. +     regx <- OP (regy, ...) (regy dead)
  2591. +   
  2592. +  Search backwards for last previous setting of regy in which the 
  2593. +  setting of regy can be replaced with regx.  If it can then
  2594. +  do the replacement and then if delete_flag is set delete insn.  
  2595. +*/
  2596. +
  2597. +static
  2598. +int
  2599. +try_backwards_replace (regx, regy, insn, delete_flag, file)
  2600. +  rtx regx, regy, insn;
  2601. +  FILE *file;
  2602. +{
  2603. +  rtx this_insn, set_insn, stop_insn;
  2604. +  int stop_replacement = 0;
  2605. +  int found = 0, insn_code_number, not_yet_recoged;
  2606. +  
  2607. +  
  2608. +  if (file)
  2609. +    {
  2610. +      fprintf (file, "\ninsn %d reg%d <- reg%d (reg%d dead) (try backwards)\n", 
  2611. +      INSN_UID(insn), REGNO (regx), REGNO (regy), REGNO(regy));
  2612. +    }
  2613. +  this_insn = prev_nonnote_insn (insn);
  2614. +  /* Find the first previous insn in the block that sets regy and in
  2615. +     which regy can be replaced with regx */
  2616. +  while (!found && this_insn 
  2617. +         && !(GET_CODE (this_insn) == CODE_LABEL 
  2618. +              || GET_CODE (this_insn) == CALL_INSN
  2619. +              || GET_CODE (this_insn) == JUMP_INSN))
  2620. +    {
  2621. +      if (GET_CODE (this_insn) == INSN)
  2622. +        {
  2623. +          if (GET_CODE (PATTERN (this_insn)) != SET)
  2624. +            {
  2625. +              return (0);
  2626. +            }
  2627. +          if (GET_CODE (SET_DEST (PATTERN (this_insn))) == REG)
  2628. +            {
  2629. +              if (REGNO (regx) == REGNO (SET_DEST (PATTERN (this_insn))))
  2630. +                {
  2631. +                  return (0);
  2632. +                }
  2633. +              else if (REGNO (regy) == REGNO (SET_DEST (PATTERN (this_insn))))
  2634. +                {
  2635. +                  if (GET_MODE (regy) 
  2636. +                       == GET_MODE (SET_DEST (PATTERN (this_insn))))
  2637. +                    {
  2638. +#ifdef REGISTER_CONSTRAINTS
  2639. +                      if (INSN_CODE (this_insn) == -1)
  2640. +                        {
  2641. +                          INSN_CODE (this_insn) 
  2642. +                            = recog (PATTERN (this_insn), this_insn, 0);
  2643. +                        }
  2644. +#endif
  2645. +                      SET_DEST (PATTERN (this_insn)) = regx;
  2646. +#ifdef REGISTER_CONSTRAINTS
  2647. +
  2648. +                  if ((insn_code_number
  2649. +                       = recog (PATTERN (this_insn), this_insn, 0)) < 0
  2650. +                          || (INSN_CODE (this_insn) != -1
  2651. +                              && insn_code_number != INSN_CODE (this_insn)))
  2652. +                    {/* Need to have the same code number since 
  2653. +                        constraints are sometimes more lax than 
  2654. +                        predicates */
  2655. +                  SET_DEST (PATTERN (this_insn)) = regy;
  2656. +                  stop_replacement = 1;
  2657. +                }
  2658. +                else
  2659. +                    {
  2660. +                      INSN_CODE (this_insn) = insn_code_number;
  2661. +                  insn_extract (this_insn);
  2662. +                  if(!constrain_operands (INSN_CODE (this_insn), 1))
  2663. +                        {
  2664. +                      /* restore the previous situation */
  2665. +                        SET_DEST (PATTERN (this_insn)) = regy;
  2666. +                          /*INSN_CODE (this_insn) 
  2667. +                           = recog (PATTERN (this_insn), this_insn, 0);*/
  2668. +                      stop_replacement = 1;
  2669. +                     }
  2670. +                }
  2671. +        
  2672. +#endif
  2673. +                      if (!stop_replacement)
  2674. +                        {
  2675. +                          found = 1;
  2676. +                          set_insn = this_insn;
  2677. +                        }
  2678. +                    }
  2679. +                  else
  2680. +                    {
  2681. +                      return (0);
  2682. +                    }
  2683. +                }
  2684. +            }
  2685. +          else if (reg_overlap_mentioned_p (regx, SET_DEST (PATTERN (this_insn))))
  2686. +            {
  2687. +              return (0);
  2688. +            }
  2689. +          if (!found
  2690. +              && reg_overlap_mentioned_p (regx, SET_SRC (PATTERN (this_insn))))
  2691. +            {
  2692. +              return (0);
  2693. +            }
  2694. +        }
  2695. +      if (!found)
  2696. +        {
  2697. +          stop_replacement = 0;
  2698. +          this_insn = prev_nonnote_insn (this_insn);
  2699. +        }
  2700. +    }
  2701. +  if (found)
  2702. +    {/* We have found the insn that last sets regy and successfully 
  2703. +        replaced regx as the dest of that insn.  
  2704. +        In all insns between set_insn and insn replace regy with regx.  */
  2705. +      stop_replacement = 0;
  2706. +      this_insn = next_nonnote_insn (set_insn);
  2707. +      init_undo_buf ();
  2708. +      stop_insn = next_nonnote_insn (insn);
  2709. +      while (this_insn != stop_insn && !stop_replacement)
  2710. +        {
  2711. +#ifdef REGISTER_CONSTRAINTS
  2712. +          if (INSN_CODE (this_insn) == -1)
  2713. +            {
  2714. +              INSN_CODE (this_insn) 
  2715. +                = recog (PATTERN (this_insn), this_insn, 0);
  2716. +            }
  2717. +#endif
  2718. +          subst_in_insn (this_insn, PATTERN (this_insn), regy, regx, 0, 0);
  2719. +          if (reg_set_p (regy, this_insn)
  2720. +              || reg_overlap_mentioned_p (regy, PATTERN (this_insn)))
  2721. +            { /* regy was used in some other mode - fail */
  2722. +              stop_replacement = 1;
  2723. +            }
  2724. +#ifdef REGISTER_CONSTRAINTS
  2725. +          if (stop_replacement
  2726. +              ||
  2727. +              (insn_code_number
  2728. +                = recog (PATTERN (this_insn), this_insn, 0)) < 0
  2729. +              || (INSN_CODE (this_insn) != -1
  2730. +                  && insn_code_number != INSN_CODE (this_insn)))
  2731. +            {/* Need to have the same code number since constraints
  2732. +                 are sometimes more lax than predicates */
  2733. +              stop_replacement = 1;
  2734. +            }
  2735. +          else
  2736. +            {
  2737. +              INSN_CODE (this_insn) = insn_code_number;
  2738. +              insn_extract (this_insn);
  2739. +          if(!constrain_operands (INSN_CODE (this_insn), 1))
  2740. +            {
  2741. +              stop_replacement = 1;
  2742. +            }
  2743. +            }
  2744. +#endif
  2745. +          this_insn = next_nonnote_insn ( this_insn);
  2746. +        }
  2747. +        
  2748. +      if (stop_replacement)
  2749. +        { /* A replacement was unsuccessful - undo all of the replacements */
  2750. +          SET_DEST (PATTERN (set_insn)) = regy;
  2751. +          /*INSN_CODE (this_insn) 
  2752. +            = recog (PATTERN (this_insn), this_insn, 0);*/
  2753. +          this_insn = next_nonnote_insn (set_insn);
  2754. +          loop_undo_all ();
  2755. +          /*while (this_insn != insn)
  2756. +            {
  2757. +              INSN_CODE (this_insn) 
  2758. +                = recog (PATTERN (this_insn), this_insn, 0); 
  2759. +              this_insn = next_nonnote_insn (this_insn);
  2760. +            }*/
  2761. +          return (0);
  2762. +        }
  2763. +      else 
  2764. +        { 
  2765. +      if (file)
  2766. +        {
  2767. +          fprintf (file, "replaced dest reg%d of insn %d with reg%d\n",
  2768. +            REGNO (regy), INSN_UID (set_insn), REGNO (regx));
  2769. +          fprintf (file, " in insns %d through %d replaced reg%d with reg%d\n",
  2770. +            INSN_UID (next_nonnote_insn (set_insn)),
  2771. +            INSN_UID (insn), 
  2772. +            REGNO (regy), REGNO (regx));
  2773. +        }
  2774. +          if (delete_flag)
  2775. +            {/* Delete insn */
  2776. +              PUT_CODE (insn, NOTE);
  2777. +          NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
  2778. +          NOTE_SOURCE_FILE (insn) = 0;
  2779. +          if (file)
  2780. +            {
  2781. +              fprintf (file, " deleted insn %d\n", INSN_UID (insn));
  2782. +            }
  2783. +        }
  2784. +          return (1);
  2785. +        }
  2786. +    }
  2787. +  return (0);
  2788. +}
  2789. +
  2790. +
  2791. +/*
  2792. +  insn is of the form
  2793. +     regx <- regy (regy dead)
  2794. +   or
  2795. +     regx <- SUBREG (regy) (regy dead)
  2796. +   
  2797. +  Search forwards for next insn in which the regx is dead.
  2798. +  Try to replace all uses of regx with regy in those insns
  2799. +  and if successful then delete insn.  
  2800. +*/
  2801. +
  2802. +static
  2803. +int
  2804. +try_forwards_replace (regx, regy, insn, file)
  2805. +  rtx regx, regy, insn;
  2806. +  FILE *file;
  2807. +{
  2808. +  rtx this_insn, dead_insn, dead_note, stop_insn;
  2809. +  int stop_replacement = 0;
  2810. +  int found = 0, insn_code_number;
  2811. +  
  2812. +  
  2813. +  if (file)
  2814. +    {
  2815. +      if (GET_CODE (regy) == REG )
  2816. +        fprintf (file, "\ninsn %d reg%d <- reg%d (reg%d dead) (try forwards)\n", 
  2817. +        INSN_UID(insn), REGNO (regx), REGNO (regy), REGNO(regy));
  2818. +      else
  2819. +        fprintf (file, "\ninsn %d reg%d <- reg%d (reg%d dead) (try forwards)\n", 
  2820. +        INSN_UID(insn), REGNO (regx), 
  2821. +        REGNO (SUBREG_REG (regy)), 
  2822. +        REGNO (SUBREG_REG (regy)));
  2823. +    }
  2824. +  this_insn = next_nonnote_insn (insn);
  2825. +  /* Find the next insn in the block where regx dies */
  2826. +  while (!found && this_insn 
  2827. +         && !(GET_CODE (this_insn) == CODE_LABEL 
  2828. +              || GET_CODE (this_insn) == CALL_INSN
  2829. +              || GET_CODE (this_insn) == JUMP_INSN))
  2830. +    {
  2831. +      if (GET_CODE (this_insn) == INSN)
  2832. +        {
  2833. +          if (GET_CODE (PATTERN (insn)) == USE
  2834. +              && reg_overlap_mentioned_p (regx, SET_DEST (PATTERN (insn))))
  2835. +            {
  2836. +              return (0);
  2837. +            }
  2838. +          if (reg_set_p (regy, this_insn))
  2839. +            {
  2840. +              return (0);
  2841. +            }
  2842. +          else if ((dead_note 
  2843. +                    = find_regno_note (this_insn, REG_DEAD, REGNO (regx)))
  2844. +                   && rtx_equal_p (XEXP (dead_note, 0), regx))
  2845. +            {
  2846. +              found = 1;
  2847. +              dead_insn = this_insn;
  2848. +            }
  2849. +        }
  2850. +      if (!found)
  2851. +        {
  2852. +          this_insn = next_nonnote_insn (this_insn);
  2853. +        }
  2854. +    }
  2855. +  if (found)
  2856. +    {/* We have found the insn where regx dies.  */
  2857. +      stop_replacement = 0;
  2858. +      this_insn = next_nonnote_insn (insn);
  2859. +      init_undo_buf ();
  2860. +      stop_insn = next_nonnote_insn (dead_insn);
  2861. +      while (this_insn != stop_insn && !stop_replacement)
  2862. +        {
  2863. +#ifdef REGISTER_CONSTRAINTS
  2864. +          if (INSN_CODE (this_insn) == -1)
  2865. +            {
  2866. +              INSN_CODE (this_insn) 
  2867. +                = recog (PATTERN (this_insn), this_insn, 0);
  2868. +            }
  2869. +#endif
  2870. +          subst_in_insn (this_insn, PATTERN (this_insn), regx, regy, 0, 0);
  2871. +          if (reg_set_p (regx, this_insn)
  2872. +              || reg_overlap_mentioned_p (regx, PATTERN (this_insn)))
  2873. +            { /* regx is used in some other mode - fail.  */
  2874. +              if (file)
  2875. +                {
  2876. +                  fprintf (file, "fail insn %d reg %d still mentioned\n",
  2877. +                  INSN_UID (this_insn), REGNO (regx));
  2878. +                  tdebug_rtx (this_insn, file);
  2879. +                }
  2880. +              stop_replacement = 1;
  2881. +            }
  2882. +#ifdef REGISTER_CONSTRAINTS
  2883. +          if (stop_replacement
  2884. +              ||
  2885. +              (insn_code_number
  2886. +                = recog (PATTERN (this_insn), this_insn, 0)) < 0
  2887. +              || (INSN_CODE (this_insn) != -1
  2888. +                  && insn_code_number != INSN_CODE (this_insn)))
  2889. +            { /* Need to have the same code number since constraints
  2890. +                 are sometimes more lax than predicates */
  2891. +              if (file)
  2892. +                {
  2893. +                  fprintf (file, "fail insn %d new_recog %d old_recog %d\n",
  2894. +                  INSN_UID (this_insn), insn_code_number, INSN_CODE (this_insn));
  2895. +                }
  2896. +              stop_replacement = 1;
  2897. +            }
  2898. +          else
  2899. +            {
  2900. +              INSN_CODE (this_insn) = insn_code_number;
  2901. +              insn_extract (this_insn);
  2902. +          if(!constrain_operands (INSN_CODE (this_insn), 1))
  2903. +            {
  2904. +              stop_replacement = 1;
  2905. +            }
  2906. +            }
  2907. +#endif
  2908. +          this_insn = next_nonnote_insn ( this_insn);
  2909. +        }
  2910. +        
  2911. +      if (stop_replacement)
  2912. +        { /* A replacement was unsuccessful - undo all of the replacements */
  2913. +          this_insn = next_nonnote_insn (insn);
  2914. +          loop_undo_all ();
  2915. +          stop_insn = next_nonnote_insn (dead_insn);
  2916. +          /*while (this_insn != stop_insn)
  2917. +            {
  2918. +              INSN_CODE (this_insn) 
  2919. +                 = recog (PATTERN (this_insn), this_insn, 0); 
  2920. +              this_insn = next_nonnote_insn (this_insn);
  2921. +            }*/
  2922. +          return (0);
  2923. +        }
  2924. +      else
  2925. +        { /* Delete insn */
  2926. +          PUT_CODE (insn, NOTE);
  2927. +      NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
  2928. +      NOTE_SOURCE_FILE (insn) = 0;
  2929. +      XEXP (dead_note, 0) = regy;
  2930. +      if (file)
  2931. +        {
  2932. +          fprintf (file, " in insns %d through %d replaced reg%d with reg%d\n",
  2933. +               INSN_UID (next_nonnote_insn (insn)),
  2934. +               INSN_UID (dead_insn), 
  2935. +               REGNO (regx), 
  2936. +               GET_CODE (regy) == REG 
  2937. +                 ? REGNO (regy)
  2938. +                 : REGNO (SUBREG_REG (regy)));
  2939. +          fprintf (file, " deleted insn %d\n", INSN_UID (insn));
  2940. +        }
  2941. +          return (1);
  2942. +        }
  2943. +    }
  2944. +  return (0);
  2945.  }
  2946. diff -r -u -H -N gcc-2.6.3/config/i386/i386.c gcc-i2.6.3/config/i386/i386.c
  2947. --- gcc-2.6.3/config/i386/i386.c    Sat Nov  5 13:57:47 1994
  2948. +++ gcc-i2.6.3/config/i386/i386.c    Thu Feb 16 12:51:33 1995
  2949. @@ -1,6 +1,9 @@
  2950.  /* Subroutines for insn-output.c for Intel X86.
  2951. -   Copyright (C) 1988, 1992, 1994 Free Software Foundation, Inc.
  2952. +   Copyright (C) 1988, 1992 Free Software Foundation, Inc.
  2953.  
  2954. +   Pentium cpu support and other enhancements by Tevi Devor Intel Corp.
  2955. +   (tevi@iil.intel.com).
  2956. +  
  2957.  This file is part of GNU CC.
  2958.  
  2959.  GNU CC is free software; you can redistribute it and/or modify
  2960. @@ -33,6 +36,8 @@
  2961.  #include "flags.h"
  2962.  #include "function.h"
  2963.  
  2964. +/* intel1 Need the EXTRA_CONSTRAINT - changed s to */
  2965. +#if 0
  2966.  #ifdef EXTRA_CONSTRAINT
  2967.  /* If EXTRA_CONSTRAINT is defined, then the 'S'
  2968.     constraint in REG_CLASS_FROM_LETTER will no longer work, and various
  2969. @@ -41,6 +46,10 @@
  2970.  /* The previous line used to be #error, but some compilers barf
  2971.     even if the conditional was untrue.  */
  2972.  #endif
  2973. +#endif
  2974. +
  2975. +/* which cpu are we scheduling for intel1*/
  2976. +enum processor_type x86_cpu;
  2977.  
  2978.  #define AT_BP(mode) (gen_rtx (MEM, (mode), frame_pointer_rtx))
  2979.  
  2980. @@ -51,6 +60,9 @@
  2981.  char *output_move_const_single ();
  2982.  char *output_fp_cc0_set ();
  2983.  
  2984. +/* intel1 */
  2985. +static int opt_level=0;
  2986. +
  2987.  char *hi_reg_name[] = HI_REGISTER_NAMES;
  2988.  char *qi_reg_name[] = QI_REGISTER_NAMES;
  2989.  char *qi_high_reg_name[] = QI_HIGH_REGISTER_NAMES;
  2990. @@ -74,151 +86,8 @@
  2991.  /* Test and compare insns in i386.md store the information needed to
  2992.     generate branch and scc insns here.  */
  2993.  
  2994. -struct rtx_def *i386_compare_op0 = NULL_RTX;
  2995. -struct rtx_def *i386_compare_op1 = NULL_RTX;
  2996. +struct rtx_def *i386_compare_op0, *i386_compare_op1;
  2997.  struct rtx_def *(*i386_compare_gen)(), *(*i386_compare_gen_eq)();
  2998. -
  2999. -/* Register allocation order */
  3000. -char *i386_reg_alloc_order = (char *)0;
  3001. -static char regs_allocated[FIRST_PSEUDO_REGISTER];
  3002. -
  3003. -
  3004. -/* Sometimes certain combinations of command options do not make
  3005. -   sense on a particular target machine.  You can define a macro
  3006. -   `OVERRIDE_OPTIONS' to take account of this.  This macro, if
  3007. -   defined, is executed once just after all the command options have
  3008. -   been parsed.
  3009. -
  3010. -   Don't use this macro to turn on various extra optimizations for
  3011. -   `-O'.  That is what `OPTIMIZATION_OPTIONS' is for.  */
  3012. -
  3013. -void
  3014. -override_options ()
  3015. -{
  3016. -  int ch, i, regno;
  3017. -
  3018. -#ifdef SUBTARGET_OVERRIDE_OPTIONS
  3019. -  SUBTARGET_OVERRIDE_OPTIONS;
  3020. -#endif
  3021. -
  3022. -  /* Validate registers in register allocation order */
  3023. -  if (i386_reg_alloc_order)
  3024. -    {
  3025. -      for (i = 0; (ch = i386_reg_alloc_order[i]) != '\0'; i++)
  3026. -    {
  3027. -      switch (ch)
  3028. -        {
  3029. -        case 'a':    regno = 0;    break;
  3030. -        case 'd':    regno = 1;    break;
  3031. -        case 'c':    regno = 2;    break;
  3032. -        case 'b':    regno = 3;    break;
  3033. -        case 'S':    regno = 4;    break;
  3034. -        case 'D':    regno = 5;    break;
  3035. -        case 'B':    regno = 6;    break;
  3036. -
  3037. -        default:    fatal ("Register '%c' is unknown", ch);
  3038. -        }
  3039. -
  3040. -      if (regs_allocated[regno])
  3041. -        fatal ("Register '%c' was already specified in the allocation order", ch);
  3042. -
  3043. -      regs_allocated[regno] = 1;
  3044. -    }
  3045. -    }
  3046. -}
  3047. -
  3048. -/* A C statement (sans semicolon) to choose the order in which to
  3049. -   allocate hard registers for pseudo-registers local to a basic
  3050. -   block.
  3051. -
  3052. -   Store the desired register order in the array `reg_alloc_order'.
  3053. -   Element 0 should be the register to allocate first; element 1, the
  3054. -   next register; and so on.
  3055. -
  3056. -   The macro body should not assume anything about the contents of
  3057. -   `reg_alloc_order' before execution of the macro.
  3058. -
  3059. -   On most machines, it is not necessary to define this macro.  */
  3060. -
  3061. -void
  3062. -order_regs_for_local_alloc ()
  3063. -{
  3064. -  int i, ch, order, regno;
  3065. -
  3066. -  /* User specified the register allocation order */
  3067. -  if (i386_reg_alloc_order)
  3068. -    {
  3069. -      for (i = order = 0; (ch = i386_reg_alloc_order[i]) != '\0'; i++)
  3070. -    {
  3071. -      switch (ch)
  3072. -        {
  3073. -        case 'a':    regno = 0;    break;
  3074. -        case 'd':    regno = 1;    break;
  3075. -        case 'c':    regno = 2;    break;
  3076. -        case 'b':    regno = 3;    break;
  3077. -        case 'S':    regno = 4;    break;
  3078. -        case 'D':    regno = 5;    break;
  3079. -        case 'B':    regno = 6;    break;
  3080. -        }
  3081. -
  3082. -      reg_alloc_order[order++] = regno;
  3083. -    }
  3084. -
  3085. -      for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
  3086. -    {
  3087. -      if (!regs_allocated[i])
  3088. -        reg_alloc_order[order++] = i;
  3089. -    }
  3090. -    }
  3091. -
  3092. -  /* If users did not specify a register allocation order, favor eax
  3093. -     normally except if DImode variables are used, in which case
  3094. -     favor edx before eax, which seems to cause less spill register
  3095. -     not found messages.  */
  3096. -  else
  3097. -    {
  3098. -      rtx insn;
  3099. -
  3100. -      for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
  3101. -    reg_alloc_order[i] = i;
  3102. -
  3103. -      if (optimize)
  3104. -    {
  3105. -      int use_dca = FALSE;
  3106. -
  3107. -      for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
  3108. -        {
  3109. -          if (GET_CODE (insn) == INSN)
  3110. -        {
  3111. -          rtx set = NULL_RTX;
  3112. -          rtx pattern = PATTERN (insn);
  3113. -
  3114. -          if (GET_CODE (pattern) == SET)
  3115. -            set = pattern;
  3116. -
  3117. -          else if ((GET_CODE (pattern) == PARALLEL
  3118. -                || GET_CODE (pattern) == SEQUENCE)
  3119. -               && GET_CODE (XVECEXP (pattern, 0, 0)) == SET)
  3120. -            set = XVECEXP (pattern, 0, 0);
  3121. -
  3122. -          if (set && GET_MODE (SET_SRC (set)) == DImode)
  3123. -            {
  3124. -              use_dca = TRUE;
  3125. -              break;
  3126. -            }
  3127. -        }
  3128. -        }
  3129. -
  3130. -      if (use_dca)
  3131. -        {
  3132. -          reg_alloc_order[0] = 1;    /* edx */
  3133. -          reg_alloc_order[1] = 2;    /* ecx */
  3134. -          reg_alloc_order[2] = 0;    /* eax */
  3135. -        }
  3136. -    }
  3137. -    }
  3138. -}
  3139. -
  3140.  
  3141.  /* Output an insn whose source is a 386 integer register.  SRC is the
  3142.     rtx for the register, and TEMPLATE is the op-code template.  SRC may
  3143. @@ -378,7 +247,6 @@
  3144.    abort ();
  3145.  }
  3146.  
  3147. -
  3148.  /* Output an insn to add the constant N to the register X.  */
  3149.  
  3150.  static void
  3151. @@ -387,25 +255,19 @@
  3152.       rtx x;
  3153.  {
  3154.    rtx xops[2];
  3155. -  xops[0] = x;
  3156. -
  3157. -  if (n == -1)
  3158. -    output_asm_insn (AS1 (dec%L0,%0), xops);
  3159. -  else if (n == 1)
  3160. -    output_asm_insn (AS1 (inc%L0,%0), xops);
  3161. -  else if (n < 0)
  3162. +  xops[1] = x;
  3163. +  if (n < 0)
  3164.      {
  3165. -      xops[1] = GEN_INT (-n);
  3166. -      output_asm_insn (AS2 (sub%L0,%1,%0), xops);
  3167. +      xops[0] = GEN_INT (-n);
  3168. +      output_asm_insn (AS2 (sub%L0,%0,%1), xops);
  3169.      }
  3170.    else if (n > 0)
  3171.      {
  3172. -      xops[1] = GEN_INT (n);
  3173. -      output_asm_insn (AS2 (add%L0,%1,%0), xops);
  3174. +      xops[0] = GEN_INT (n);
  3175. +      output_asm_insn (AS2 (add%L0,%0,%1), xops);
  3176.      }
  3177.  }
  3178.  
  3179. -
  3180.  /* Output assembler code to perform a doubleword move insn
  3181.     with operands OPERANDS.  */
  3182.  
  3183. @@ -737,199 +599,6 @@
  3184.  
  3185.    return "";
  3186.  }
  3187. -
  3188. -
  3189. -#define MAX_TMPS 2        /* max temporary registers used */
  3190. -
  3191. -/* Output the appropriate code to move push memory on the stack */
  3192. -
  3193. -char *
  3194. -output_move_pushmem (operands, insn, length, tmp_start, n_operands)
  3195. -     rtx operands[];
  3196. -     rtx insn;
  3197. -     int length;
  3198. -     int tmp_start;
  3199. -     int n_operands;
  3200. -{
  3201. -
  3202. -  struct {
  3203. -    char *load;
  3204. -    char *push;
  3205. -    rtx   xops[2];
  3206. -  } tmp_info[MAX_TMPS];
  3207. -
  3208. -  rtx src = operands[1];
  3209. -  int max_tmps = 0;
  3210. -  int offset = 0;
  3211. -  int stack_p = reg_overlap_mentioned_p (stack_pointer_rtx, src);
  3212. -  int stack_offset = 0;
  3213. -  int i, num_tmps;
  3214. -  rtx xops[1];
  3215. -
  3216. -  if (!offsettable_memref_p (src))
  3217. -    fatal_insn ("Source is not offsettable", insn);
  3218. -
  3219. -  if ((length & 3) != 0)
  3220. -    fatal_insn ("Pushing non-word aligned size", insn);
  3221. -
  3222. -  /* Figure out which temporary registers we have available */
  3223. -  for (i = tmp_start; i < n_operands; i++)
  3224. -    {
  3225. -      if (GET_CODE (operands[i]) == REG)
  3226. -    {
  3227. -      if (reg_overlap_mentioned_p (operands[i], src))
  3228. -        continue;
  3229. -
  3230. -      tmp_info[ max_tmps++ ].xops[1] = operands[i];
  3231. -      if (max_tmps == MAX_TMPS)
  3232. -        break;
  3233. -    }
  3234. -    }
  3235. -
  3236. -  if (max_tmps == 0)
  3237. -    for (offset = length - 4; offset >= 0; offset -= 4)
  3238. -      {
  3239. -    xops[0] = adj_offsettable_operand (src, offset + stack_offset);
  3240. -    output_asm_insn (AS1(push%L0,%0), xops);
  3241. -    if (stack_p)
  3242. -      stack_offset += 4;
  3243. -      }
  3244. -
  3245. -  else
  3246. -    for (offset = length - 4; offset >= 0; )
  3247. -      {
  3248. -    for (num_tmps = 0; num_tmps < max_tmps && offset >= 0; num_tmps++)
  3249. -      {
  3250. -        tmp_info[num_tmps].load    = AS2(mov%L0,%0,%1);
  3251. -        tmp_info[num_tmps].push    = AS1(push%L0,%1);
  3252. -        tmp_info[num_tmps].xops[0] = adj_offsettable_operand (src, offset + stack_offset);
  3253. -        offset -= 4;
  3254. -      }
  3255. -
  3256. -    for (i = 0; i < num_tmps; i++)
  3257. -      output_asm_insn (tmp_info[i].load, tmp_info[i].xops);
  3258. -
  3259. -    for (i = 0; i < num_tmps; i++)
  3260. -      output_asm_insn (tmp_info[i].push, tmp_info[i].xops);
  3261. -
  3262. -    if (stack_p)
  3263. -      stack_offset += 4*num_tmps;
  3264. -      }
  3265. -
  3266. -  return "";
  3267. -}
  3268. -
  3269. -
  3270. -
  3271. -/* Output the appropriate code to move data between two memory locations */
  3272. -
  3273. -char *
  3274. -output_move_memory (operands, insn, length, tmp_start, n_operands)
  3275. -     rtx operands[];
  3276. -     rtx insn;
  3277. -     int length;
  3278. -     int tmp_start;
  3279. -     int n_operands;
  3280. -{
  3281. -  struct {
  3282. -    char *load;
  3283. -    char *store;
  3284. -    rtx   xops[3];
  3285. -  } tmp_info[MAX_TMPS];
  3286. -
  3287. -  rtx dest = operands[0];
  3288. -  rtx src  = operands[1];
  3289. -  rtx qi_tmp = NULL_RTX;
  3290. -  int max_tmps = 0;
  3291. -  int offset = 0;
  3292. -  int i, num_tmps;
  3293. -  rtx xops[3];
  3294. -
  3295. -  if (GET_CODE (dest) == MEM
  3296. -      && GET_CODE (XEXP (dest, 0)) == PRE_INC
  3297. -      && XEXP (XEXP (dest, 0), 0) == stack_pointer_rtx)
  3298. -    return output_move_pushmem (operands, insn, length, tmp_start, n_operands);
  3299. -
  3300. -  if (!offsettable_memref_p (src))
  3301. -    fatal_insn ("Source is not offsettable", insn);
  3302. -
  3303. -  if (!offsettable_memref_p (dest))
  3304. -    fatal_insn ("Destination is not offsettable", insn);
  3305. -
  3306. -  /* Figure out which temporary registers we have available */
  3307. -  for (i = tmp_start; i < n_operands; i++)
  3308. -    {
  3309. -      if (GET_CODE (operands[i]) == REG)
  3310. -    {
  3311. -      if ((length & 1) != 0 && !qi_tmp && QI_REG_P (operands[i]))
  3312. -        qi_tmp = operands[i];
  3313. -
  3314. -      if (reg_overlap_mentioned_p (operands[i], dest))
  3315. -        fatal_insn ("Temporary register overlaps the destination", insn);
  3316. -
  3317. -      if (reg_overlap_mentioned_p (operands[i], src))
  3318. -        fatal_insn ("Temporary register overlaps the source", insn);
  3319. -
  3320. -      tmp_info[ max_tmps++ ].xops[2] = operands[i];
  3321. -      if (max_tmps == MAX_TMPS)
  3322. -        break;
  3323. -    }
  3324. -    }
  3325. -
  3326. -  if (max_tmps == 0)
  3327. -    fatal_insn ("No scratch registers were found to do memory->memory moves", insn);
  3328. -
  3329. -  if ((length & 1) != 0)
  3330. -    {
  3331. -      if (!qi_tmp)
  3332. -    fatal_insn ("No byte register found when moving odd # of bytes.", insn);
  3333. -    }
  3334. -
  3335. -  while (length > 1)
  3336. -    {
  3337. -      for (num_tmps = 0; num_tmps < max_tmps; num_tmps++)
  3338. -    {
  3339. -      if (length >= 4)
  3340. -        {
  3341. -          tmp_info[num_tmps].load    = AS2(mov%L0,%1,%2);
  3342. -          tmp_info[num_tmps].store   = AS2(mov%L0,%2,%0);
  3343. -          tmp_info[num_tmps].xops[0] = adj_offsettable_operand (dest, offset);
  3344. -          tmp_info[num_tmps].xops[1] = adj_offsettable_operand (src, offset);
  3345. -          offset += 4;
  3346. -          length -= 4;
  3347. -        }
  3348. -      else if (length >= 2)
  3349. -        {
  3350. -          tmp_info[num_tmps].load    = AS2(mov%W0,%1,%2);
  3351. -          tmp_info[num_tmps].store   = AS2(mov%W0,%2,%0);
  3352. -          tmp_info[num_tmps].xops[0] = adj_offsettable_operand (dest, offset);
  3353. -          tmp_info[num_tmps].xops[1] = adj_offsettable_operand (src, offset);
  3354. -          offset += 2;
  3355. -          length -= 2;
  3356. -        }
  3357. -      else
  3358. -        break;
  3359. -    }
  3360. -
  3361. -      for (i = 0; i < num_tmps; i++)
  3362. -    output_asm_insn (tmp_info[i].load, tmp_info[i].xops);
  3363. -
  3364. -      for (i = 0; i < num_tmps; i++)
  3365. -    output_asm_insn (tmp_info[i].store, tmp_info[i].xops);
  3366. -    }
  3367. -
  3368. -  if (length == 1)
  3369. -    {
  3370. -      xops[0] = adj_offsettable_operand (dest, offset);
  3371. -      xops[1] = adj_offsettable_operand (src, offset);
  3372. -      xops[2] = qi_tmp;
  3373. -      output_asm_insn (AS2(mov%B0,%1,%2), xops);
  3374. -      output_asm_insn (AS2(mov%B0,%2,%0), xops);
  3375. -    }
  3376. -
  3377. -  return "";
  3378. -}
  3379. -
  3380.  
  3381.  int
  3382.  standard_80387_constant_p (x)
  3383. @@ -1084,6 +753,111 @@
  3384.    return 0;
  3385.  }
  3386.  
  3387. +/* Return a legitimate reference for ORIG (an address) using the
  3388. +   register REG.  If REG is 0, a new pseudo is generated.
  3389. +
  3390. +   There are three types of references that must be handled:
  3391. +
  3392. +   1. Global data references must load the address from the GOT, via
  3393. +      the PIC reg.  An insn is emitted to do this load, and the reg is
  3394. +      returned.
  3395. +
  3396. +   2. Static data references must compute the address as an offset
  3397. +      from the GOT, whose base is in the PIC reg.  An insn is emitted to
  3398. +      compute the address into a reg, and the reg is returned.  Static
  3399. +      data objects have SYMBOL_REF_FLAG set to differentiate them from
  3400. +      global data objects.
  3401. +
  3402. +   3. Constant pool addresses must be handled special.  They are
  3403. +      considered legitimate addresses, but only if not used with regs.
  3404. +      When printed, the output routines know to print the reference with the
  3405. +      PIC reg, even though the PIC reg doesn't appear in the RTL.
  3406. +
  3407. +   GO_IF_LEGITIMATE_ADDRESS rejects symbolic references unless the PIC
  3408. +   reg also appears in the address (except for constant pool references,
  3409. +   noted above).
  3410. +
  3411. +   "switch" statements also require special handling when generating
  3412. +   PIC code.  See comments by the `casesi' insn in i386.md for details.  */
  3413. +
  3414. +rtx
  3415. +legitimize_pic_address (orig, reg)
  3416. +     rtx orig;
  3417. +     rtx reg;
  3418. +{
  3419. +  rtx addr = orig;
  3420. +  rtx new = orig;
  3421. +
  3422. +  if (GET_CODE (addr) == SYMBOL_REF || GET_CODE (addr) == LABEL_REF)
  3423. +    {
  3424. +      if (GET_CODE (addr) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (addr))
  3425. +    reg = new = orig;
  3426. +      else
  3427. +    {
  3428. +      if (reg == 0)
  3429. +        reg = gen_reg_rtx (Pmode);
  3430. +
  3431. +      if (GET_CODE (addr) == SYMBOL_REF && SYMBOL_REF_FLAG (addr))
  3432. +        new = gen_rtx (PLUS, Pmode, pic_offset_table_rtx, orig);
  3433. +      else
  3434. +        new = gen_rtx (MEM, Pmode,
  3435. +               gen_rtx (PLUS, Pmode,
  3436. +                    pic_offset_table_rtx, orig));
  3437. +
  3438. +      emit_move_insn (reg, new);
  3439. +    }
  3440. +      current_function_uses_pic_offset_table = 1;
  3441. +      return reg;
  3442. +    }
  3443. +  else if (GET_CODE (addr) == CONST || GET_CODE (addr) == PLUS)
  3444. +    {
  3445. +      rtx base;
  3446. +
  3447. +      if (GET_CODE (addr) == CONST)
  3448. +    {
  3449. +      addr = XEXP (addr, 0);
  3450. +      if (GET_CODE (addr) != PLUS)
  3451. +        abort ();
  3452. +    }
  3453. +
  3454. +      if (XEXP (addr, 0) == pic_offset_table_rtx)
  3455. +    return orig;
  3456. +
  3457. +      if (reg == 0)
  3458. +    reg = gen_reg_rtx (Pmode);
  3459. +
  3460. +      base = legitimize_pic_address (XEXP (addr, 0), reg);
  3461. +      addr = legitimize_pic_address (XEXP (addr, 1),
  3462. +                     base == reg ? NULL_RTX : reg);
  3463. +
  3464. +      if (GET_CODE (addr) == CONST_INT)
  3465. +    return plus_constant (base, INTVAL (addr));
  3466. +
  3467. +      if (GET_CODE (addr) == PLUS && CONSTANT_P (XEXP (addr, 1)))
  3468. +    {
  3469. +      base = gen_rtx (PLUS, Pmode, base, XEXP (addr, 0));
  3470. +      addr = XEXP (addr, 1);
  3471. +    }
  3472. +    return gen_rtx (PLUS, Pmode, base, addr);
  3473. +    }
  3474. +  return new;
  3475. +}
  3476. +
  3477. +/* Emit insns to move operands[1] into operands[0].  */
  3478. +
  3479. +void
  3480. +emit_pic_move (operands, mode)
  3481. +     rtx *operands;
  3482. +     enum machine_mode mode;
  3483. +{
  3484. +  rtx temp = reload_in_progress ? operands[0] : gen_reg_rtx (Pmode);
  3485. +
  3486. +  if (GET_CODE (operands[0]) == MEM && SYMBOLIC_CONST (operands[1]))
  3487. +    operands[1] = (rtx) force_reg (SImode, operands[1]);
  3488. +  else
  3489. +    operands[1] = legitimize_pic_address (operands[1], temp);
  3490. +}
  3491. +
  3492.  /* This function generates the assembly code for function entry.
  3493.     FILE is an stdio stream to output the code to.
  3494.     SIZE is an int: how many units of temporary storage to allocate. */
  3495. @@ -1177,7 +951,6 @@
  3496.    return nregs == 0 || ! frame_pointer_needed;
  3497.  }
  3498.  
  3499. -
  3500.  /* This function generates the assembly code for function exit.
  3501.     FILE is an stdio stream to output the code to.
  3502.     SIZE is an int: how many units of temporary storage to deallocate. */
  3503. @@ -1251,7 +1024,7 @@
  3504.      {
  3505.        /* On i486, mov & pop is faster than "leave". */
  3506.  
  3507. -      if (!TARGET_386)
  3508. +      if (TARGET_486)
  3509.      {
  3510.        xops[0] = frame_pointer_rtx;
  3511.        output_asm_insn (AS2 (mov%L2,%0,%2), xops);
  3512. @@ -1290,1572 +1063,2060 @@
  3513.    else
  3514.      output_asm_insn ("ret", xops);
  3515.  }
  3516. -
  3517.  
  3518. -/* GO_IF_LEGITIMATE_ADDRESS recognizes an RTL expression
  3519. -   that is a valid memory address for an instruction.
  3520. -   The MODE argument is the machine mode for the MEM expression
  3521. -   that wants to use this address.
  3522. -
  3523. -   On x86, legitimate addresses are:
  3524. -    base                movl (base),reg
  3525. -    displacement            movl disp,reg
  3526. -    base + displacement        movl disp(base),reg
  3527. -    index + base            movl (base,index),reg
  3528. -    (index + base) + displacement    movl disp(base,index),reg
  3529. -    index*scale            movl (,index,scale),reg
  3530. -    index*scale + disp        movl disp(,index,scale),reg
  3531. -    index*scale + base         movl (base,index,scale),reg
  3532. -    (index*scale + base) + disp    movl disp(base,index,scale),reg
  3533. -
  3534. -    In each case, scale can be 1, 2, 4, 8.  */
  3535. -
  3536. -/* This is exactly the same as print_operand_addr, except that
  3537. -   it recognizes addresses instead of printing them.
  3538. -
  3539. -   It only recognizes address in canonical form.  LEGITIMIZE_ADDRESS should
  3540. -   convert common non-canonical forms to canonical form so that they will
  3541. -   be recognized.  */
  3542. -
  3543. -#define ADDR_INVALID(msg,insn)                        \
  3544. -do {                                    \
  3545. -  if (TARGET_DEBUG_ADDR)                        \
  3546. -    {                                    \
  3547. -      fprintf (stderr, msg);                        \
  3548. -      debug_rtx (insn);                            \
  3549. -    }                                    \
  3550. -} while (0)
  3551. +/* Print an integer constant expression in assembler syntax.  Addition
  3552. +   and subtraction are the only arithmetic that may appear in these
  3553. +   expressions.  FILE is the stdio stream to write to, X is the rtx, and
  3554. +   CODE is the operand print code from the output string.  */
  3555.  
  3556. -int
  3557. -legitimate_address_p (mode, addr, strict)
  3558. -     enum machine_mode mode;
  3559. -     register rtx addr;
  3560. -     int strict;
  3561. +static void
  3562. +output_pic_addr_const (file, x, code)
  3563. +     FILE *file;
  3564. +     rtx x;
  3565. +     int code;
  3566.  {
  3567. -  rtx base  = NULL_RTX;
  3568. -  rtx indx  = NULL_RTX;
  3569. -  rtx scale = NULL_RTX;
  3570. -  rtx disp  = NULL_RTX;
  3571. -
  3572. -  if (TARGET_DEBUG_ADDR)
  3573. -    {
  3574. -      fprintf (stderr,
  3575. -           "\n==========\nGO_IF_LEGITIMATE_ADDRESS, mode = %s, strict = %d\n",
  3576. -           GET_MODE_NAME (mode), strict);
  3577. -
  3578. -      debug_rtx (addr);
  3579. -    }
  3580. -
  3581. -  if (GET_CODE (addr) == REG || GET_CODE (addr) == SUBREG)
  3582. -      base = addr;                /* base reg */
  3583. +  char buf[256];
  3584.  
  3585. -  else if (GET_CODE (addr) == PLUS)
  3586. +  switch (GET_CODE (x))
  3587.      {
  3588. -      rtx op0 = XEXP (addr, 0);
  3589. -      rtx op1 = XEXP (addr, 1);
  3590. -      enum rtx_code code0 = GET_CODE (op0);
  3591. -      enum rtx_code code1 = GET_CODE (op1);
  3592. +    case PC:
  3593. +      if (flag_pic)
  3594. +    putc ('.', file);
  3595. +      else
  3596. +    abort ();
  3597. +      break;
  3598.  
  3599. -      if (code0 == REG || code0 == SUBREG)
  3600. +    case SYMBOL_REF:
  3601. +    case LABEL_REF:
  3602. +      if (GET_CODE (x) == SYMBOL_REF)
  3603. +    assemble_name (file, XSTR (x, 0));
  3604. +      else
  3605.      {
  3606. -      if (code1 == REG || code1 == SUBREG)
  3607. -        {
  3608. -          indx = op0;            /* index + base */
  3609. -          base = op1;
  3610. -        }
  3611. -
  3612. -      else
  3613. -        {
  3614. -          base = op0;            /* base + displacement */
  3615. -          disp = op1;
  3616. -        }
  3617. +      ASM_GENERATE_INTERNAL_LABEL (buf, "L",
  3618. +                       CODE_LABEL_NUMBER (XEXP (x, 0)));
  3619. +      assemble_name (asm_out_file, buf);
  3620.      }
  3621.  
  3622. -      else if (code0 == MULT)
  3623. -    {
  3624. -      indx  = XEXP (op0, 0);
  3625. -      scale = XEXP (op0, 1);
  3626. +      if (GET_CODE (x) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (x))
  3627. +    fprintf (file, "@GOTOFF(%%ebx)");
  3628. +      else if (code == 'P')
  3629. +    fprintf (file, "@PLT");
  3630. +      else if (GET_CODE (x) == LABEL_REF || ! SYMBOL_REF_FLAG (x))
  3631. +    fprintf (file, "@GOT");
  3632. +      else
  3633. +    fprintf (file, "@GOTOFF");
  3634.  
  3635. -      if (code1 == REG || code1 == SUBREG)
  3636. -        base = op1;                /* index*scale + base */
  3637. +      break;
  3638.  
  3639. -      else
  3640. -        disp = op1;                /* index*scale + disp */
  3641. -    }
  3642. +    case CODE_LABEL:
  3643. +      ASM_GENERATE_INTERNAL_LABEL (buf, "L", CODE_LABEL_NUMBER (x));
  3644. +      assemble_name (asm_out_file, buf);
  3645. +      break;
  3646.  
  3647. -      else if (code0 == PLUS && GET_CODE (XEXP (op0, 0)) == MULT)
  3648. -    {
  3649. -      indx  = XEXP (XEXP (op0, 0), 0);    /* index*scale + base + disp */
  3650. -      scale = XEXP (XEXP (op0, 0), 1);
  3651. -      base  = XEXP (op0, 1);
  3652. -      disp  = op1;
  3653. -    }
  3654. +    case CONST_INT:
  3655. +      fprintf (file, "%d", INTVAL (x));
  3656. +      break;
  3657.  
  3658. -      else if (code0 == PLUS)
  3659. -    {
  3660. -      indx = XEXP (op0, 0);            /* index + base + disp */
  3661. -      base = XEXP (op0, 1);
  3662. -      disp = op1;
  3663. -    }
  3664. +    case CONST:
  3665. +      /* This used to output parentheses around the expression,
  3666. +     but that does not work on the 386 (either ATT or BSD assembler).  */
  3667. +      output_pic_addr_const (file, XEXP (x, 0), code);
  3668. +      break;
  3669.  
  3670. -      else
  3671. +    case CONST_DOUBLE:
  3672. +      if (GET_MODE (x) == VOIDmode)
  3673.      {
  3674. -      ADDR_INVALID ("PLUS subcode is not valid.\n", op0);
  3675. -      return FALSE;
  3676. +      /* We can use %d if the number is <32 bits and positive.  */
  3677. +      if (CONST_DOUBLE_HIGH (x) || CONST_DOUBLE_LOW (x) < 0)
  3678. +        fprintf (file, "0x%x%08x",
  3679. +             CONST_DOUBLE_HIGH (x), CONST_DOUBLE_LOW (x));
  3680. +      else
  3681. +        fprintf (file, "%d", CONST_DOUBLE_LOW (x));
  3682.      }
  3683. -    }
  3684. -
  3685. -  else if (GET_CODE (addr) == MULT)
  3686. -    {
  3687. -      indx  = XEXP (addr, 0);            /* index*scale */
  3688. -      scale = XEXP (addr, 1);
  3689. -    }
  3690. -
  3691. -  else
  3692. -    disp = addr;                /* displacement */
  3693. -
  3694. -  /* Allow arg pointer and stack pointer as index if there is not scaling */
  3695. -  if (base && indx && !scale
  3696. -      && (indx == arg_pointer_rtx || indx == stack_pointer_rtx))
  3697. -    {
  3698. -      rtx tmp = base;
  3699. -      base = indx;
  3700. -      indx = tmp;
  3701. -    }
  3702. +      else
  3703. +    /* We can't handle floating point constants;
  3704. +       PRINT_OPERAND must handle them.  */
  3705. +    output_operand_lossage ("floating constant misused");
  3706. +      break;
  3707.  
  3708. -  /* Validate base register */
  3709. -  /* Don't allow SUBREG's here, it can lead to spill failures when the base
  3710. -     is one word out of a two word structure, which is represented internally
  3711. -     as a DImode int.  */
  3712. -  if (base)
  3713. -    {
  3714. -      if (GET_CODE (base) != REG)
  3715. +    case PLUS:
  3716. +      /* Some assemblers need integer constants to appear last (eg masm).  */
  3717. +      if (GET_CODE (XEXP (x, 0)) == CONST_INT)
  3718.      {
  3719. -      ADDR_INVALID ("Base is not a register.\n", base);
  3720. -      return FALSE;
  3721. +      output_pic_addr_const (file, XEXP (x, 1), code);
  3722. +      if (INTVAL (XEXP (x, 0)) >= 0)
  3723. +        fprintf (file, "+");
  3724. +      output_pic_addr_const (file, XEXP (x, 0), code);
  3725.      }
  3726. -
  3727. -      if ((strict && !REG_OK_FOR_BASE_STRICT_P (base))
  3728. -      || (!strict && !REG_OK_FOR_BASE_NONSTRICT_P (base)))
  3729. +      else
  3730.      {
  3731. -      ADDR_INVALID ("Base is not valid.\n", base);
  3732. -      return FALSE;
  3733. +      output_pic_addr_const (file, XEXP (x, 0), code);
  3734. +      if (INTVAL (XEXP (x, 1)) >= 0)
  3735. +        fprintf (file, "+");
  3736. +      output_pic_addr_const (file, XEXP (x, 1), code);
  3737.      }
  3738. -    }
  3739. +      break;
  3740.  
  3741. -  /* Validate index register */
  3742. -  /* Don't allow SUBREG's here, it can lead to spill failures when the index
  3743. -     is one word out of a two word structure, which is represented internally
  3744. -     as a DImode int.  */
  3745. -  if (indx)
  3746. -    {
  3747. -      if (GET_CODE (indx) != REG)
  3748. -    {
  3749. -      ADDR_INVALID ("Index is not a register.\n", indx);
  3750. -      return FALSE;
  3751. -    }
  3752. +    case MINUS:
  3753. +      output_pic_addr_const (file, XEXP (x, 0), code);
  3754. +      fprintf (file, "-");
  3755. +      output_pic_addr_const (file, XEXP (x, 1), code);
  3756. +      break;
  3757.  
  3758. -      if ((strict && !REG_OK_FOR_INDEX_STRICT_P (indx))
  3759. -      || (!strict && !REG_OK_FOR_INDEX_NONSTRICT_P (indx)))
  3760. -    {
  3761. -      ADDR_INVALID ("Index is not valid.\n", indx);
  3762. -      return FALSE;
  3763. -    }
  3764. +    default:
  3765. +      output_operand_lossage ("invalid expression as operand");
  3766.      }
  3767. -  else if (scale)
  3768. -    abort ();                    /* scale w/o index illegal */
  3769. +}
  3770. +
  3771. +/* Meaning of CODE:
  3772. +   f -- float insn (print a CONST_DOUBLE as a float rather than in hex).
  3773. +   D,L,W,B,Q,S -- print the opcode suffix for specified size of operand.
  3774. +   R -- print the prefix for register names.
  3775. +   z -- print the opcode suffix for the size of the current operand.
  3776. +   * -- print a star (in certain assembler syntax)
  3777. +   w -- print the operand as if it's a "word" (HImode) even if it isn't.
  3778. +   c -- don't print special prefixes before constant operands.
  3779. +*/
  3780.  
  3781. -  /* Validate scale factor */
  3782. -  if (scale)
  3783. +void
  3784. +print_operand (file, x, code)
  3785. +     FILE *file;
  3786. +     rtx x;
  3787. +     int code;
  3788. +{
  3789. +  if (code)
  3790.      {
  3791. -      HOST_WIDE_INT value;
  3792. -
  3793. -      if (GET_CODE (scale) != CONST_INT)
  3794. +      switch (code)
  3795.      {
  3796. -      ADDR_INVALID ("Scale is not valid.\n", scale);
  3797. -      return FALSE;
  3798. -    }
  3799. +    case '*':
  3800. +      if (USE_STAR)
  3801. +        putc ('*', file);
  3802. +      return;
  3803.  
  3804. -      value = INTVAL (scale);
  3805. -      if (value != 1 && value != 2 && value != 4 && value != 8)
  3806. -    {
  3807. -      ADDR_INVALID ("Scale is not a good multiplier.\n", scale);
  3808. -      return FALSE;
  3809. -    }
  3810. -    }
  3811. +    case 'L':
  3812. +      PUT_OP_SIZE (code, 'l', file);
  3813. +      return;
  3814.  
  3815. -  /* Validate displacement */
  3816. -  if (disp)
  3817. -    {
  3818. -      if (!CONSTANT_ADDRESS_P (disp))
  3819. -    {
  3820. -      ADDR_INVALID ("Displacement is not valid.\n", disp);
  3821. -      return FALSE;
  3822. -    }
  3823. +    case 'W':
  3824. +      PUT_OP_SIZE (code, 'w', file);
  3825. +      return;
  3826.  
  3827. -      if (GET_CODE (disp) == CONST_DOUBLE)
  3828. -    {
  3829. -      ADDR_INVALID ("Displacement is a const_double.\n", disp);
  3830. -      return FALSE;
  3831. -    }
  3832. +    case 'B':
  3833. +      PUT_OP_SIZE (code, 'b', file);
  3834. +      return;
  3835.  
  3836. -      if (flag_pic && SYMBOLIC_CONST (disp) && base != pic_offset_table_rtx
  3837. -      && (indx != pic_offset_table_rtx || scale != NULL_RTX))
  3838. -    {
  3839. -      ADDR_INVALID ("Displacement is an invalid pic reference.\n", disp);
  3840. -      return FALSE;
  3841. -    }
  3842. +    case 'Q':
  3843. +      PUT_OP_SIZE (code, 'l', file);
  3844. +      return;
  3845.  
  3846. -      if (HALF_PIC_P () && HALF_PIC_ADDRESS_P (disp)
  3847. -      && (base != NULL_RTX || indx != NULL_RTX))
  3848. -    {
  3849. -      ADDR_INVALID ("Displacement is an invalid half-pic reference.\n", disp);
  3850. -      return FALSE;
  3851. -    }
  3852. -    }
  3853. +    case 'S':
  3854. +      PUT_OP_SIZE (code, 's', file);
  3855. +      return;
  3856.  
  3857. -  if (TARGET_DEBUG_ADDR)
  3858. -    fprintf (stderr, "Address is valid.\n");
  3859. +    case 'T':
  3860. +      PUT_OP_SIZE (code, 't', file);
  3861. +      return;
  3862.  
  3863. -  /* Everything looks valid, return true */
  3864. -  return TRUE;
  3865. -}
  3866. +    case 'z':
  3867. +      /* 387 opcodes don't get size suffixes if the operands are
  3868. +         registers. */
  3869.  
  3870. -
  3871. -/* Return a legitimate reference for ORIG (an address) using the
  3872. -   register REG.  If REG is 0, a new pseudo is generated.
  3873. +      if (STACK_REG_P (x))
  3874. +        return;
  3875.  
  3876. -   There are three types of references that must be handled:
  3877. +      /* this is the size of op from size of operand */
  3878. +      switch (GET_MODE_SIZE (GET_MODE (x)))
  3879. +        {
  3880. +        case 1:
  3881. +          PUT_OP_SIZE ('B', 'b', file);
  3882. +          return;
  3883.  
  3884. -   1. Global data references must load the address from the GOT, via
  3885. -      the PIC reg.  An insn is emitted to do this load, and the reg is
  3886. -      returned.
  3887. +        case 2:
  3888. +          PUT_OP_SIZE ('W', 'w', file);
  3889. +          return;
  3890.  
  3891. -   2. Static data references must compute the address as an offset
  3892. -      from the GOT, whose base is in the PIC reg.  An insn is emitted to
  3893. -      compute the address into a reg, and the reg is returned.  Static
  3894. -      data objects have SYMBOL_REF_FLAG set to differentiate them from
  3895. -      global data objects.
  3896. +        case 4:
  3897. +          if (GET_MODE (x) == SFmode)
  3898. +        {
  3899. +          PUT_OP_SIZE ('S', 's', file);
  3900. +          return;
  3901. +        }
  3902. +          else
  3903. +        PUT_OP_SIZE ('L', 'l', file);
  3904. +          return;
  3905.  
  3906. -   3. Constant pool addresses must be handled special.  They are
  3907. -      considered legitimate addresses, but only if not used with regs.
  3908. -      When printed, the output routines know to print the reference with the
  3909. -      PIC reg, even though the PIC reg doesn't appear in the RTL.
  3910. +        case 12:
  3911. +          PUT_OP_SIZE ('T', 't', file);
  3912. +          return;
  3913.  
  3914. -   GO_IF_LEGITIMATE_ADDRESS rejects symbolic references unless the PIC
  3915. -   reg also appears in the address (except for constant pool references,
  3916. -   noted above).
  3917. +        case 8:
  3918. +          if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT)
  3919. +        {
  3920. +#ifdef GAS_MNEMONICS
  3921. +          PUT_OP_SIZE ('Q', 'q', file);
  3922. +          return;
  3923. +#else
  3924. +          PUT_OP_SIZE ('Q', 'l', file);    /* Fall through */
  3925. +#endif
  3926. +        }
  3927.  
  3928. -   "switch" statements also require special handling when generating
  3929. -   PIC code.  See comments by the `casesi' insn in i386.md for details.  */
  3930. +          PUT_OP_SIZE ('Q', 'l', file);
  3931. +          return;
  3932. +        }
  3933.  
  3934. -rtx
  3935. -legitimize_pic_address (orig, reg)
  3936. -     rtx orig;
  3937. -     rtx reg;
  3938. -{
  3939. -  rtx addr = orig;
  3940. -  rtx new = orig;
  3941. +    case 'b':
  3942. +    case 'w':
  3943. +    case 'k':
  3944. +    case 'h':
  3945. +    case 'y':
  3946. +    case 'P':
  3947. +      break;
  3948.  
  3949. -  if (GET_CODE (addr) == SYMBOL_REF || GET_CODE (addr) == LABEL_REF)
  3950. -    {
  3951. -      if (GET_CODE (addr) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (addr))
  3952. -    reg = new = orig;
  3953. -      else
  3954. -    {
  3955. -      if (reg == 0)
  3956. -        reg = gen_reg_rtx (Pmode);
  3957. +    default:
  3958. +      {
  3959. +        char str[50];
  3960.  
  3961. -      if ((GET_CODE (addr) == SYMBOL_REF && SYMBOL_REF_FLAG (addr))
  3962. -          || GET_CODE (addr) == LABEL_REF)
  3963. -        new = gen_rtx (PLUS, Pmode, pic_offset_table_rtx, orig);
  3964. -      else
  3965. -        new = gen_rtx (MEM, Pmode,
  3966. -               gen_rtx (PLUS, Pmode,
  3967. -                    pic_offset_table_rtx, orig));
  3968. -
  3969. -      emit_move_insn (reg, new);
  3970. +        sprintf (str, "invalid operand code `%c'", code);
  3971. +        output_operand_lossage (str);
  3972. +      }
  3973.      }
  3974. -      current_function_uses_pic_offset_table = 1;
  3975. -      return reg;
  3976.      }
  3977. -  else if (GET_CODE (addr) == CONST || GET_CODE (addr) == PLUS)
  3978. +  if (GET_CODE (x) == REG)
  3979.      {
  3980. -      rtx base;
  3981. -
  3982. -      if (GET_CODE (addr) == CONST)
  3983. +      PRINT_REG (x, code, file);
  3984. +    }
  3985. +  else if (GET_CODE (x) == MEM)
  3986. +    {
  3987. +      PRINT_PTR (x, file);
  3988. +      if (CONSTANT_ADDRESS_P (XEXP (x, 0)))
  3989.      {
  3990. -      addr = XEXP (addr, 0);
  3991. -      if (GET_CODE (addr) != PLUS)
  3992. -        abort ();
  3993. +      if (flag_pic)
  3994. +        output_pic_addr_const (file, XEXP (x, 0), code);
  3995. +      else
  3996. +        output_addr_const (file, XEXP (x, 0));
  3997.      }
  3998. -
  3999. -      if (XEXP (addr, 0) == pic_offset_table_rtx)
  4000. -    return orig;
  4001. -
  4002. -      if (reg == 0)
  4003. -    reg = gen_reg_rtx (Pmode);
  4004. -
  4005. -      base = legitimize_pic_address (XEXP (addr, 0), reg);
  4006. -      addr = legitimize_pic_address (XEXP (addr, 1),
  4007. -                     base == reg ? NULL_RTX : reg);
  4008. -
  4009. -      if (GET_CODE (addr) == CONST_INT)
  4010. -    return plus_constant (base, INTVAL (addr));
  4011. -
  4012. -      if (GET_CODE (addr) == PLUS && CONSTANT_P (XEXP (addr, 1)))
  4013. +      else
  4014. +    output_address (XEXP (x, 0));
  4015. +    }
  4016. +  else if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) == SFmode)
  4017. +    {
  4018. +      REAL_VALUE_TYPE r; long l;
  4019. +      REAL_VALUE_FROM_CONST_DOUBLE (r, x);
  4020. +      REAL_VALUE_TO_TARGET_SINGLE (r, l);
  4021. +      PRINT_IMMED_PREFIX (file);
  4022. +      fprintf (file, "0x%x", l);
  4023. +    }
  4024. + /* These float cases don't actually occur as immediate operands. */
  4025. + else if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) == DFmode)
  4026. +    {
  4027. +      REAL_VALUE_TYPE r; char dstr[30];
  4028. +      REAL_VALUE_FROM_CONST_DOUBLE (r, x);
  4029. +      REAL_VALUE_TO_DECIMAL (r, "%.22e", dstr);
  4030. +      fprintf (file, "%s", dstr);
  4031. +    }
  4032. +  else if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) == XFmode)
  4033. +    {
  4034. +      REAL_VALUE_TYPE r; char dstr[30];
  4035. +      REAL_VALUE_FROM_CONST_DOUBLE (r, x);
  4036. +      REAL_VALUE_TO_DECIMAL (r, "%.22e", dstr);
  4037. +      fprintf (file, "%s", dstr);
  4038. +    }
  4039. +  else 
  4040. +    {
  4041. +      if (code != 'P')
  4042.      {
  4043. -      base = gen_rtx (PLUS, Pmode, base, XEXP (addr, 0));
  4044. -      addr = XEXP (addr, 1);
  4045. +      if (GET_CODE (x) == CONST_INT || GET_CODE (x) == CONST_DOUBLE)
  4046. +        PRINT_IMMED_PREFIX (file);
  4047. +      else if (GET_CODE (x) == CONST || GET_CODE (x) == SYMBOL_REF
  4048. +           || GET_CODE (x) == LABEL_REF)
  4049. +        PRINT_OFFSET_PREFIX (file);
  4050.      }
  4051. -    return gen_rtx (PLUS, Pmode, base, addr);
  4052. +      if (flag_pic)
  4053. +    output_pic_addr_const (file, x, code);
  4054. +      else
  4055. +    output_addr_const (file, x);
  4056.      }
  4057. -  return new;
  4058.  }
  4059.  
  4060. -
  4061. -/* Emit insns to move operands[1] into operands[0].  */
  4062. +/* Print a memory operand whose address is ADDR.  */
  4063.  
  4064.  void
  4065. -emit_pic_move (operands, mode)
  4066. -     rtx *operands;
  4067. -     enum machine_mode mode;
  4068. -{
  4069. -  rtx temp = reload_in_progress ? operands[0] : gen_reg_rtx (Pmode);
  4070. -
  4071. -  if (GET_CODE (operands[0]) == MEM && SYMBOLIC_CONST (operands[1]))
  4072. -    operands[1] = (rtx) force_reg (SImode, operands[1]);
  4073. -  else
  4074. -    operands[1] = legitimize_pic_address (operands[1], temp);
  4075. -}
  4076. -
  4077. -
  4078. -/* Try machine-dependent ways of modifying an illegitimate address
  4079. -   to be legitimate.  If we find one, return the new, valid address.
  4080. -   This macro is used in only one place: `memory_address' in explow.c.
  4081. -
  4082. -   OLDX is the address as it was before break_out_memory_refs was called.
  4083. -   In some cases it is useful to look at this to decide what needs to be done.
  4084. -
  4085. -   MODE and WIN are passed so that this macro can use
  4086. -   GO_IF_LEGITIMATE_ADDRESS.
  4087. -
  4088. -   It is always safe for this macro to do nothing.  It exists to recognize
  4089. -   opportunities to optimize the output.
  4090. -
  4091. -   For the 80386, we handle X+REG by loading X into a register R and
  4092. -   using R+REG.  R will go in a general reg and indexing will be used.
  4093. -   However, if REG is a broken-out memory address or multiplication,
  4094. -   nothing needs to be done because REG can certainly go in a general reg.
  4095. -
  4096. -   When -fpic is used, special handling is needed for symbolic references.
  4097. -   See comments by legitimize_pic_address in i386.c for details.  */
  4098. -
  4099. -rtx
  4100. -legitimize_address (x, oldx, mode)
  4101. -     register rtx x;
  4102. -     register rtx oldx;
  4103. -     enum machine_mode mode;
  4104. +print_operand_address (file, addr)
  4105. +     FILE *file;
  4106. +     register rtx addr;
  4107.  {
  4108. -  int changed = 0;
  4109. -  unsigned log;
  4110. -
  4111. -  if (TARGET_DEBUG_ADDR)
  4112. -    {
  4113. -      fprintf (stderr, "\n==========\nLEGITIMIZE_ADDRESS, mode = %s\n", GET_MODE_NAME (mode));
  4114. -      debug_rtx (x);
  4115. -    }
  4116. -
  4117. -  if (flag_pic && SYMBOLIC_CONST (x))
  4118. -    return legitimize_pic_address (x, 0);
  4119. +  register rtx reg1, reg2, breg, ireg;
  4120. +  rtx offset;
  4121.  
  4122. -  /* Canonicalize shifts by 0, 1, 2, 3 into multiply */
  4123. -  if (GET_CODE (x) == ASHIFT
  4124. -      && GET_CODE (XEXP (x, 1)) == CONST_INT
  4125. -      && (log = (unsigned)exact_log2 (INTVAL (XEXP (x, 1)))) < 4)
  4126. +  switch (GET_CODE (addr))
  4127.      {
  4128. -      changed = 1;
  4129. -      x = gen_rtx (MULT, Pmode,
  4130. -           force_reg (Pmode, XEXP (x, 0)),
  4131. -           GEN_INT (1 << log));
  4132. -    }
  4133. +    case REG:
  4134. +      ADDR_BEG (file);
  4135. +      fprintf (file, "%se", RP);
  4136. +      fputs (hi_reg_name[REGNO (addr)], file);
  4137. +      ADDR_END (file);
  4138. +      break;
  4139.  
  4140. -  if (GET_CODE (x) == PLUS)
  4141. -    {
  4142. -      /* Canonicalize shifts by 0, 1, 2, 3 into multiply */
  4143. -      if (GET_CODE (XEXP (x, 0)) == ASHIFT
  4144. -      && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT
  4145. -      && (log = (unsigned)exact_log2 (INTVAL (XEXP (XEXP (x, 0), 1)))) < 4)
  4146. +    case PLUS:
  4147. +      reg1 = 0;
  4148. +      reg2 = 0;
  4149. +      ireg = 0;
  4150. +      breg = 0;
  4151. +      offset = 0;
  4152. +      if (CONSTANT_ADDRESS_P (XEXP (addr, 0)))
  4153.      {
  4154. -      changed = 1;
  4155. -      XEXP (x, 0) = gen_rtx (MULT, Pmode,
  4156. -                 force_reg (Pmode, XEXP (XEXP (x, 0), 0)),
  4157. -                 GEN_INT (1 << log));
  4158. +      offset = XEXP (addr, 0);
  4159. +      addr = XEXP (addr, 1);
  4160.      }
  4161. -
  4162. -      if (GET_CODE (XEXP (x, 1)) == ASHIFT
  4163. -      && GET_CODE (XEXP (XEXP (x, 1), 1)) == CONST_INT
  4164. -      && (log = (unsigned)exact_log2 (INTVAL (XEXP (XEXP (x, 1), 1)))) < 4)
  4165. +      else if (CONSTANT_ADDRESS_P (XEXP (addr, 1)))
  4166.      {
  4167. -      changed = 1;
  4168. -      XEXP (x, 1) = gen_rtx (MULT, Pmode,
  4169. -                 force_reg (Pmode, XEXP (XEXP (x, 1), 0)),
  4170. -                 GEN_INT (1 << log));
  4171. +      offset = XEXP (addr, 1);
  4172. +      addr = XEXP (addr, 0);
  4173.      }
  4174. -
  4175. -      /* Put multiply first if it isn't already */
  4176. -      if (GET_CODE (XEXP (x, 1)) == MULT)
  4177. +      if (GET_CODE (addr) != PLUS) ;
  4178. +      else if (GET_CODE (XEXP (addr, 0)) == MULT)
  4179.      {
  4180. -      rtx tmp = XEXP (x, 0);
  4181. -      XEXP (x, 0) = XEXP (x, 1);
  4182. -      XEXP (x, 1) = tmp;
  4183. -      changed = 1;
  4184. +      reg1 = XEXP (addr, 0);
  4185. +      addr = XEXP (addr, 1);
  4186.      }
  4187. -
  4188. -      /* Canonicalize (plus (mult (reg) (const)) (plus (reg) (const)))
  4189. -     into (plus (plus (mult (reg) (const)) (reg)) (const)).  This can be
  4190. -     created by virtual register instantiation, register elimination, and
  4191. -     similar optimizations.  */
  4192. -      if (GET_CODE (XEXP (x, 0)) == MULT && GET_CODE (XEXP (x, 1)) == PLUS)
  4193. +      else if (GET_CODE (XEXP (addr, 1)) == MULT)
  4194. +    {
  4195. +      reg1 = XEXP (addr, 1);
  4196. +      addr = XEXP (addr, 0);
  4197. +    }
  4198. +      else if (GET_CODE (XEXP (addr, 0)) == REG)
  4199. +    {
  4200. +      reg1 = XEXP (addr, 0);
  4201. +      addr = XEXP (addr, 1);
  4202. +    }
  4203. +      else if (GET_CODE (XEXP (addr, 1)) == REG)
  4204. +    {
  4205. +      reg1 = XEXP (addr, 1);
  4206. +      addr = XEXP (addr, 0);
  4207. +    }
  4208. +      if (GET_CODE (addr) == REG || GET_CODE (addr) == MULT)
  4209. +    {
  4210. +      if (reg1 == 0) reg1 = addr;
  4211. +      else reg2 = addr;
  4212. +      addr = 0;
  4213. +    }
  4214. +      if (offset != 0)
  4215. +    {
  4216. +      if (addr != 0) abort ();
  4217. +      addr = offset;
  4218. +    }
  4219. +      if ((reg1 && GET_CODE (reg1) == MULT)
  4220. +      || (reg2 != 0 && REGNO_OK_FOR_BASE_P (REGNO (reg2))))
  4221. +    {
  4222. +      breg = reg2;
  4223. +      ireg = reg1;
  4224. +    }
  4225. +      else if (reg1 != 0 && REGNO_OK_FOR_BASE_P (REGNO (reg1)))
  4226.      {
  4227. -      changed = 1;
  4228. -      x = gen_rtx (PLUS, Pmode,
  4229. -               gen_rtx (PLUS, Pmode, XEXP (x, 0), XEXP (XEXP (x, 1), 0)),
  4230. -               XEXP (XEXP (x, 1), 1));
  4231. +      breg = reg1;
  4232. +      ireg = reg2;
  4233.      }
  4234.  
  4235. -      /* Canonicalize (plus (plus (mult (reg) (const)) (plus (reg) (const))) const)
  4236. -     into (plus (plus (mult (reg) (const)) (reg)) (const)).  */
  4237. -      else if (GET_CODE (x) == PLUS && GET_CODE (XEXP (x, 0)) == PLUS
  4238. -           && GET_CODE (XEXP (XEXP (x, 0), 0)) == MULT
  4239. -           && GET_CODE (XEXP (XEXP (x, 0), 1)) == PLUS
  4240. -           && CONSTANT_P (XEXP (x, 1)))
  4241. +      if (ireg != 0 || breg != 0)
  4242.      {
  4243. -      rtx constant, other;
  4244. +      int scale = 1;
  4245.  
  4246. -      if (GET_CODE (XEXP (x, 1)) == CONST_INT)
  4247. -        {
  4248. -          constant = XEXP (x, 1);
  4249. -          other = XEXP (XEXP (XEXP (x, 0), 1), 1);
  4250. -        }
  4251. -      else if (GET_CODE (XEXP (XEXP (XEXP (x, 0), 1), 1)) == CONST_INT)
  4252. +      if (addr != 0)
  4253.          {
  4254. -          constant = XEXP (XEXP (XEXP (x, 0), 1), 1);
  4255. -          other = XEXP (x, 1);
  4256. +          if (GET_CODE (addr) == LABEL_REF)
  4257. +        output_asm_label (addr);
  4258. +          else
  4259. +        {
  4260. +          if (flag_pic)
  4261. +            output_pic_addr_const (file, addr, 0);
  4262. +          else
  4263. +            output_addr_const (file, addr);
  4264. +        }
  4265.          }
  4266. -      else
  4267. -        constant = 0;
  4268.  
  4269. -      if (constant)
  4270. +        if (ireg != 0 && GET_CODE (ireg) == MULT)
  4271.          {
  4272. -          changed = 1;
  4273. -          x = gen_rtx (PLUS, Pmode,
  4274. -               gen_rtx (PLUS, Pmode, XEXP (XEXP (x, 0), 0),
  4275. -                    XEXP (XEXP (XEXP (x, 0), 1), 0)),
  4276. -               plus_constant (other, INTVAL (constant)));
  4277. +          scale = INTVAL (XEXP (ireg, 1));
  4278. +          ireg = XEXP (ireg, 0);
  4279.          }
  4280. -    }
  4281.  
  4282. -      if (changed && legitimate_address_p (mode, x, FALSE))
  4283. -    return x;
  4284. -
  4285. -      if (GET_CODE (XEXP (x, 0)) == MULT)
  4286. -    {
  4287. -      changed = 1;
  4288. -      XEXP (x, 0) = force_operand (XEXP (x, 0), 0);
  4289. -    }
  4290. +      /* The stack pointer can only appear as a base register,
  4291. +         never an index register, so exchange the regs if it is wrong. */
  4292.  
  4293. -      if (GET_CODE (XEXP (x, 1)) == MULT)
  4294. -    {
  4295. -      changed = 1;
  4296. -      XEXP (x, 1) = force_operand (XEXP (x, 1), 0);
  4297. -    }
  4298. +      if (scale == 1 && ireg && REGNO (ireg) == STACK_POINTER_REGNUM)
  4299. +        {
  4300. +          rtx tmp;
  4301.  
  4302. -      if (changed
  4303. -      && GET_CODE (XEXP (x, 1)) == REG
  4304. -      && GET_CODE (XEXP (x, 0)) == REG)
  4305. -    return x;
  4306. +          tmp = breg;
  4307. +          breg = ireg;
  4308. +          ireg = tmp;
  4309. +        }
  4310.  
  4311. -      if (flag_pic && SYMBOLIC_CONST (XEXP (x, 1)))
  4312. -    {
  4313. -      changed = 1;
  4314. -      x = legitimize_pic_address (x, 0);
  4315. +      /* output breg+ireg*scale */
  4316. +      PRINT_B_I_S (breg, ireg, scale, file);
  4317. +      break;
  4318.      }
  4319.  
  4320. -      if (changed && legitimate_address_p (mode, x, FALSE))
  4321. -    return x;
  4322. -
  4323. -      if (GET_CODE (XEXP (x, 0)) == REG)
  4324. -    {
  4325. -      register rtx temp = gen_reg_rtx (Pmode);
  4326. -      register rtx val  = force_operand (XEXP (x, 1), temp);
  4327. -      if (val != temp)
  4328. -        emit_move_insn (temp, val);
  4329. -
  4330. -      XEXP (x, 1) = temp;
  4331. -      return x;
  4332. -    }
  4333. +    case MULT:
  4334. +      {
  4335. +    int scale;
  4336. +    if (GET_CODE (XEXP (addr, 0)) == CONST_INT)
  4337. +      {
  4338. +        scale = INTVAL (XEXP (addr, 0));
  4339. +        ireg = XEXP (addr, 1);
  4340. +      }
  4341. +    else
  4342. +      {
  4343. +        scale = INTVAL (XEXP (addr, 1));
  4344. +        ireg = XEXP (addr, 0);
  4345. +      }
  4346. +    output_addr_const (file, const0_rtx);
  4347. +    PRINT_B_I_S ((rtx) 0, ireg, scale, file);
  4348. +      }
  4349. +      break;
  4350.  
  4351. -      else if (GET_CODE (XEXP (x, 1)) == REG)
  4352. +    default:
  4353. +      if (GET_CODE (addr) == CONST_INT
  4354. +      && INTVAL (addr) < 0x8000
  4355. +      && INTVAL (addr) >= -0x8000)
  4356. +    fprintf (file, "%d", INTVAL (addr));
  4357. +      else
  4358.      {
  4359. -      register rtx temp = gen_reg_rtx (Pmode);
  4360. -      register rtx val  = force_operand (XEXP (x, 0), temp);
  4361. -      if (val != temp)
  4362. -        emit_move_insn (temp, val);
  4363. -
  4364. -      XEXP (x, 0) = temp;
  4365. -      return x;
  4366. +      if (flag_pic)
  4367. +        output_pic_addr_const (file, addr, 0);
  4368. +      else
  4369. +        output_addr_const (file, addr);
  4370.      }
  4371.      }
  4372. -
  4373. -  return x;
  4374.  }
  4375. -
  4376.  
  4377. -/* Print an integer constant expression in assembler syntax.  Addition
  4378. -   and subtraction are the only arithmetic that may appear in these
  4379. -   expressions.  FILE is the stdio stream to write to, X is the rtx, and
  4380. -   CODE is the operand print code from the output string.  */
  4381. +/* Set the cc_status for the results of an insn whose pattern is EXP.
  4382. +   On the 80386, we assume that only test and compare insns, as well
  4383. +   as SI, HI, & DI mode ADD, SUB, NEG, AND, IOR, XOR, ASHIFT, LSHIFT,
  4384. +   ASHIFTRT, and LSHIFTRT instructions set the condition codes usefully.
  4385. +   Also, we assume that jumps, moves and sCOND don't affect the condition
  4386. +   codes.  All else clobbers the condition codes, by assumption.
  4387.  
  4388. -static void
  4389. -output_pic_addr_const (file, x, code)
  4390. -     FILE *file;
  4391. -     rtx x;
  4392. -     int code;
  4393. -{
  4394. -  char buf[256];
  4395. +   We assume that ALL integer add, minus, etc. instructions effect the
  4396. +   condition codes.  This MUST be consistent with i386.md.
  4397.  
  4398. -  switch (GET_CODE (x))
  4399. -    {
  4400. -    case PC:
  4401. -      if (flag_pic)
  4402. -    putc ('.', file);
  4403. -      else
  4404. -    abort ();
  4405. -      break;
  4406. +   We don't record any float test or compare - the redundant test &
  4407. +   compare check in final.c does not handle stack-like regs correctly. */
  4408.  
  4409. -    case SYMBOL_REF:
  4410. -    case LABEL_REF:
  4411. -      if (GET_CODE (x) == SYMBOL_REF)
  4412. -    assemble_name (file, XSTR (x, 0));
  4413. -      else
  4414. +void
  4415. +notice_update_cc (exp)
  4416. +     rtx exp;
  4417. +{
  4418. +  if (GET_CODE (exp) == SET)
  4419. +    {
  4420. +      /* Jumps do not alter the cc's.  */
  4421. +      if (SET_DEST (exp) == pc_rtx)
  4422. +    return;
  4423. +#ifdef IS_STACK_MODE
  4424. +      /* intel1 
  4425. +         Moving into a memory of stack_mode may have been moved
  4426. +         in between the use and set of cc0 by loop_spl(). So
  4427. +         old value of cc.status must be retained */
  4428. +      if(GET_CODE(SET_DEST(exp))==MEM 
  4429. +         && IS_STACK_MODE(GET_MODE(SET_DEST(exp))))
  4430. +        {
  4431. +          return;
  4432. +        }
  4433. +#endif
  4434. +      /* Moving register or memory into a register:
  4435. +     it doesn't alter the cc's, but it might invalidate
  4436. +     the RTX's which we remember the cc's came from.
  4437. +     (Note that moving a constant 0 or 1 MAY set the cc's).  */
  4438. +      if (REG_P (SET_DEST (exp))
  4439. +      && (REG_P (SET_SRC (exp)) || GET_CODE (SET_SRC (exp)) == MEM
  4440. +          || GET_RTX_CLASS (GET_CODE (SET_SRC (exp))) == '<'))
  4441.      {
  4442. -      ASM_GENERATE_INTERNAL_LABEL (buf, "L",
  4443. -                       CODE_LABEL_NUMBER (XEXP (x, 0)));
  4444. -      assemble_name (asm_out_file, buf);
  4445. +      if (cc_status.value1
  4446. +          && reg_overlap_mentioned_p (SET_DEST (exp), cc_status.value1))
  4447. +        cc_status.value1 = 0;
  4448. +      if (cc_status.value2
  4449. +          && reg_overlap_mentioned_p (SET_DEST (exp), cc_status.value2))
  4450. +        cc_status.value2 = 0;
  4451. +      return;
  4452.      }
  4453. -
  4454. -      if (GET_CODE (x) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (x))
  4455. -    fprintf (file, "@GOTOFF(%%ebx)");
  4456. -      else if (code == 'P')
  4457. -    fprintf (file, "@PLT");
  4458. -      else if (GET_CODE (x) == LABEL_REF)
  4459. -    fprintf (file, "@GOTOFF");
  4460. -      else if (! SYMBOL_REF_FLAG (x))
  4461. -    fprintf (file, "@GOT");
  4462. -      else
  4463. -    fprintf (file, "@GOTOFF");
  4464. -
  4465. -      break;
  4466. -
  4467. -    case CODE_LABEL:
  4468. -      ASM_GENERATE_INTERNAL_LABEL (buf, "L", CODE_LABEL_NUMBER (x));
  4469. -      assemble_name (asm_out_file, buf);
  4470. -      break;
  4471. -
  4472. -    case CONST_INT:
  4473. -      fprintf (file, "%d", INTVAL (x));
  4474. -      break;
  4475. -
  4476. -    case CONST:
  4477. -      /* This used to output parentheses around the expression,
  4478. -     but that does not work on the 386 (either ATT or BSD assembler).  */
  4479. -      output_pic_addr_const (file, XEXP (x, 0), code);
  4480. -      break;
  4481. -
  4482. -    case CONST_DOUBLE:
  4483. -      if (GET_MODE (x) == VOIDmode)
  4484. +      /* Moving register into memory doesn't alter the cc's.
  4485. +     It may invalidate the RTX's which we remember the cc's came from.  */
  4486. +      if (GET_CODE (SET_DEST (exp)) == MEM
  4487. +      && (REG_P (SET_SRC (exp))
  4488. +          || GET_RTX_CLASS (GET_CODE (SET_SRC (exp))) == '<'))
  4489.      {
  4490. -      /* We can use %d if the number is <32 bits and positive.  */
  4491. -      if (CONST_DOUBLE_HIGH (x) || CONST_DOUBLE_LOW (x) < 0)
  4492. -        fprintf (file, "0x%x%08x",
  4493. -             CONST_DOUBLE_HIGH (x), CONST_DOUBLE_LOW (x));
  4494. -      else
  4495. -        fprintf (file, "%d", CONST_DOUBLE_LOW (x));
  4496. +      if (cc_status.value1 && GET_CODE (cc_status.value1) == MEM)
  4497. +        cc_status.value1 = 0;
  4498. +      if (cc_status.value2 && GET_CODE (cc_status.value2) == MEM)
  4499. +        cc_status.value2 = 0;
  4500. +      return;
  4501.      }
  4502. -      else
  4503. -    /* We can't handle floating point constants;
  4504. -       PRINT_OPERAND must handle them.  */
  4505. -    output_operand_lossage ("floating constant misused");
  4506. -      break;
  4507. -
  4508. -    case PLUS:
  4509. -      /* Some assemblers need integer constants to appear last (eg masm).  */
  4510. -      if (GET_CODE (XEXP (x, 0)) == CONST_INT)
  4511. +      /* Function calls clobber the cc's.  */
  4512. +      else if (GET_CODE (SET_SRC (exp)) == CALL)
  4513.      {
  4514. -      output_pic_addr_const (file, XEXP (x, 1), code);
  4515. -      if (INTVAL (XEXP (x, 0)) >= 0)
  4516. -        fprintf (file, "+");
  4517. -      output_pic_addr_const (file, XEXP (x, 0), code);
  4518. +      CC_STATUS_INIT;
  4519. +      return;
  4520.      }
  4521. -      else
  4522. +      /* Tests and compares set the cc's in predictable ways.  */
  4523. +      else if (SET_DEST (exp) == cc0_rtx)
  4524.      {
  4525. -      output_pic_addr_const (file, XEXP (x, 0), code);
  4526. -      if (INTVAL (XEXP (x, 1)) >= 0)
  4527. -        fprintf (file, "+");
  4528. -      output_pic_addr_const (file, XEXP (x, 1), code);
  4529. +      CC_STATUS_INIT;
  4530. +      cc_status.value1 = SET_SRC (exp);
  4531. +      return;
  4532.      }
  4533. -      break;
  4534. +      /* Certain instructions effect the condition codes. */
  4535. +      else if (GET_MODE (SET_SRC (exp)) == SImode
  4536. +           || GET_MODE (SET_SRC (exp)) == HImode
  4537. +           || GET_MODE (SET_SRC (exp)) == QImode)
  4538. +    switch (GET_CODE (SET_SRC (exp)))
  4539. +      {
  4540. +      case ASHIFTRT: case LSHIFTRT:
  4541. +      case ASHIFT: case LSHIFT:
  4542. +        /* Shifts on the 386 don't set the condition codes if the
  4543. +           shift count is zero. */
  4544. +        if (GET_CODE (XEXP (SET_SRC (exp), 1)) != CONST_INT)
  4545. +          {
  4546. +        CC_STATUS_INIT;
  4547. +        break;
  4548. +          }
  4549. +        /* We assume that the CONST_INT is non-zero (this rtx would
  4550. +           have been deleted if it were zero. */
  4551.  
  4552. -    case MINUS:
  4553. -      output_pic_addr_const (file, XEXP (x, 0), code);
  4554. -      fprintf (file, "-");
  4555. -      output_pic_addr_const (file, XEXP (x, 1), code);
  4556. -      break;
  4557. +      case PLUS: case MINUS: case NEG:
  4558. +      case AND: case IOR: case XOR:
  4559. +        cc_status.flags = CC_NO_OVERFLOW;
  4560. +        cc_status.value1 = SET_SRC (exp);
  4561. +        cc_status.value2 = SET_DEST (exp);
  4562. +        break;
  4563.  
  4564. -    default:
  4565. -      output_operand_lossage ("invalid expression as operand");
  4566. +      default:
  4567. +        CC_STATUS_INIT;
  4568. +      }
  4569. +      else
  4570. +    {
  4571. +      CC_STATUS_INIT;
  4572. +    }
  4573. +    }
  4574. +  else if (GET_CODE (exp) == PARALLEL
  4575. +       && GET_CODE (XVECEXP (exp, 0, 0)) == SET)
  4576. +    {
  4577. +      if (SET_DEST (XVECEXP (exp, 0, 0)) == pc_rtx)
  4578. +    return;
  4579. +      if (SET_DEST (XVECEXP (exp, 0, 0)) == cc0_rtx)
  4580. +    {
  4581. +      CC_STATUS_INIT;
  4582. +      if (stack_regs_mentioned_p (SET_SRC (XVECEXP (exp, 0, 0))))
  4583. +        cc_status.flags |= CC_IN_80387;
  4584. +      else
  4585. +        cc_status.value1 = SET_SRC (XVECEXP (exp, 0, 0));
  4586. +      return;
  4587. +    }
  4588. +      CC_STATUS_INIT;
  4589. +    }
  4590. +  else
  4591. +    {
  4592. +      CC_STATUS_INIT;
  4593.      }
  4594.  }
  4595.  
  4596. -/* Meaning of CODE:
  4597. -   f -- float insn (print a CONST_DOUBLE as a float rather than in hex).
  4598. -   D,L,W,B,Q,S -- print the opcode suffix for specified size of operand.
  4599. -   R -- print the prefix for register names.
  4600. -   z -- print the opcode suffix for the size of the current operand.
  4601. -   * -- print a star (in certain assembler syntax)
  4602. -   w -- print the operand as if it's a "word" (HImode) even if it isn't.
  4603. -   c -- don't print special prefixes before constant operands.
  4604. -*/
  4605. +/* Split one or more DImode RTL references into pairs of SImode
  4606. +   references.  The RTL can be REG, offsettable MEM, integer constant, or
  4607. +   CONST_DOUBLE.  "operands" is a pointer to an array of DImode RTL to
  4608. +   split and "num" is its length.  lo_half and hi_half are output arrays
  4609. +   that parallel "operands". */
  4610.  
  4611.  void
  4612. -print_operand (file, x, code)
  4613. -     FILE *file;
  4614. -     rtx x;
  4615. -     int code;
  4616. +split_di (operands, num, lo_half, hi_half)
  4617. +     rtx operands[];
  4618. +     int num;
  4619. +     rtx lo_half[], hi_half[];
  4620.  {
  4621. -  if (code)
  4622. +  while (num--)
  4623.      {
  4624. -      switch (code)
  4625. +      if (GET_CODE (operands[num]) == REG)
  4626.      {
  4627. -    case '*':
  4628. -      if (USE_STAR)
  4629. -        putc ('*', file);
  4630. -      return;
  4631. +      lo_half[num] = gen_rtx (REG, SImode, REGNO (operands[num]));
  4632. +      hi_half[num] = gen_rtx (REG, SImode, REGNO (operands[num]) + 1);
  4633. +    }
  4634. +      else if (CONSTANT_P (operands[num]))
  4635. +    {
  4636. +      split_double (operands[num], &lo_half[num], &hi_half[num]);
  4637. +    }
  4638. +      else if (offsettable_memref_p (operands[num]))
  4639. +    {
  4640. +      lo_half[num] = operands[num];
  4641. +      hi_half[num] = adj_offsettable_operand (operands[num], 4);
  4642. +    }
  4643. +      else
  4644. +    abort();
  4645. +    }
  4646. +}
  4647. +
  4648. +/* Return 1 if this is a valid binary operation on a 387.
  4649. +   OP is the expression matched, and MODE is its mode. */
  4650.  
  4651. -    case 'L':
  4652. -      PUT_OP_SIZE (code, 'l', file);
  4653. -      return;
  4654. +int
  4655. +binary_387_op (op, mode)
  4656. +    register rtx op;
  4657. +    enum machine_mode mode;
  4658. +{
  4659. +  if (mode != VOIDmode && mode != GET_MODE (op))
  4660. +    return 0;
  4661.  
  4662. -    case 'W':
  4663. -      PUT_OP_SIZE (code, 'w', file);
  4664. -      return;
  4665. +  switch (GET_CODE (op))
  4666. +    {
  4667. +    case PLUS:
  4668. +    case MINUS:
  4669. +    case MULT:
  4670. +    case DIV:
  4671. +      return GET_MODE_CLASS (GET_MODE (op)) == MODE_FLOAT;
  4672.  
  4673. -    case 'B':
  4674. -      PUT_OP_SIZE (code, 'b', file);
  4675. -      return;
  4676. +    default:
  4677. +      return 0;
  4678. +    }
  4679. +}
  4680.  
  4681. -    case 'Q':
  4682. -      PUT_OP_SIZE (code, 'l', file);
  4683. -      return;
  4684. +/* Return 1 if this is a valid conversion operation on a 387.
  4685. +   OP is the expression matched, and MODE is its mode. */
  4686.  
  4687. -    case 'S':
  4688. -      PUT_OP_SIZE (code, 's', file);
  4689. -      return;
  4690. +int
  4691. +convert_387_op (op, mode)
  4692. +    register rtx op;
  4693. +    enum machine_mode mode;
  4694. +{
  4695. +  if (mode != VOIDmode && mode != GET_MODE (op))
  4696. +    return 0;
  4697.  
  4698. -    case 'T':
  4699. -      PUT_OP_SIZE (code, 't', file);
  4700. -      return;
  4701. +  switch (GET_CODE (op))
  4702. +    {
  4703. +    case FLOAT:
  4704. +      return GET_MODE (XEXP (op, 0)) == SImode;
  4705.  
  4706. -    case 'z':
  4707. -      /* 387 opcodes don't get size suffixes if the operands are
  4708. -         registers. */
  4709. +    case FLOAT_EXTEND:
  4710. +      return ((mode == DFmode && GET_MODE (XEXP (op, 0)) == SFmode)
  4711. +          || (mode == XFmode && GET_MODE (XEXP (op, 0)) == DFmode)
  4712. +          || (mode == XFmode && GET_MODE (XEXP (op, 0)) == SFmode));
  4713.  
  4714. -      if (STACK_REG_P (x))
  4715. -        return;
  4716. +    default:
  4717. +      return 0;
  4718. +    }
  4719. +}
  4720.  
  4721. -      /* this is the size of op from size of operand */
  4722. -      switch (GET_MODE_SIZE (GET_MODE (x)))
  4723. -        {
  4724. -        case 1:
  4725. -          PUT_OP_SIZE ('B', 'b', file);
  4726. -          return;
  4727. +/* Return 1 if this is a valid shift or rotate operation on a 386.
  4728. +   OP is the expression matched, and MODE is its mode. */
  4729.  
  4730. -        case 2:
  4731. -          PUT_OP_SIZE ('W', 'w', file);
  4732. -          return;
  4733. +int
  4734. +shift_op (op, mode)
  4735. +    register rtx op;
  4736. +    enum machine_mode mode;
  4737. +{
  4738. +  rtx operand = XEXP (op, 0);
  4739.  
  4740. -        case 4:
  4741. -          if (GET_MODE (x) == SFmode)
  4742. -        {
  4743. -          PUT_OP_SIZE ('S', 's', file);
  4744. -          return;
  4745. -        }
  4746. -          else
  4747. -        PUT_OP_SIZE ('L', 'l', file);
  4748. -          return;
  4749. +  if (mode != VOIDmode && mode != GET_MODE (op))
  4750. +    return 0;
  4751.  
  4752. -        case 12:
  4753. -          PUT_OP_SIZE ('T', 't', file);
  4754. -          return;
  4755. +  if (GET_MODE (operand) != GET_MODE (op)
  4756. +      || GET_MODE_CLASS (GET_MODE (op)) != MODE_INT)
  4757. +    return 0;
  4758.  
  4759. -        case 8:
  4760. -          if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT)
  4761. -        {
  4762. -#ifdef GAS_MNEMONICS
  4763. -          PUT_OP_SIZE ('Q', 'q', file);
  4764. -          return;
  4765. -#else
  4766. -          PUT_OP_SIZE ('Q', 'l', file);    /* Fall through */
  4767. -#endif
  4768. -        }
  4769. +  return (GET_CODE (op) == ASHIFT
  4770. +      || GET_CODE (op) == ASHIFTRT
  4771. +      || GET_CODE (op) == LSHIFTRT
  4772. +      || GET_CODE (op) == ROTATE
  4773. +      || GET_CODE (op) == ROTATERT);
  4774. +}
  4775.  
  4776. -          PUT_OP_SIZE ('Q', 'l', file);
  4777. -          return;
  4778. -        }
  4779. +/* Return 1 if OP is COMPARE rtx with mode VOIDmode.
  4780. +   MODE is not used.  */
  4781.  
  4782. -    case 'b':
  4783. -    case 'w':
  4784. -    case 'k':
  4785. -    case 'h':
  4786. -    case 'y':
  4787. -    case 'P':
  4788. -      break;
  4789. +int
  4790. +VOIDmode_compare_op (op, mode)
  4791. +    register rtx op;
  4792. +    enum machine_mode mode;
  4793. +{
  4794. +  return GET_CODE (op) == COMPARE && GET_MODE (op) == VOIDmode;
  4795. +}
  4796. +
  4797. +/* Output code to perform a 387 binary operation in INSN, one of PLUS,
  4798. +   MINUS, MULT or DIV.  OPERANDS are the insn operands, where operands[3]
  4799. +   is the expression of the binary operation.  The output may either be
  4800. +   emitted here, or returned to the caller, like all output_* functions.
  4801.  
  4802. -    default:
  4803. -      {
  4804. -        char str[50];
  4805. +   There is no guarantee that the operands are the same mode, as they
  4806. +   might be within FLOAT or FLOAT_EXTEND expressions. */
  4807.  
  4808. -        sprintf (str, "invalid operand code `%c'", code);
  4809. -        output_operand_lossage (str);
  4810. -      }
  4811. -    }
  4812. -    }
  4813. -  if (GET_CODE (x) == REG)
  4814. -    {
  4815. -      PRINT_REG (x, code, file);
  4816. -    }
  4817. -  else if (GET_CODE (x) == MEM)
  4818. +char *
  4819. +output_387_binary_op (insn, operands)
  4820. +     rtx insn;
  4821. +     rtx *operands;
  4822. +{
  4823. +  rtx temp;
  4824. +  char *base_op;
  4825. +  static char buf[100];
  4826. +
  4827. +  switch (GET_CODE (operands[3]))
  4828.      {
  4829. -      PRINT_PTR (x, file);
  4830. -      if (CONSTANT_ADDRESS_P (XEXP (x, 0)))
  4831. -    {
  4832. -      if (flag_pic)
  4833. -        output_pic_addr_const (file, XEXP (x, 0), code);
  4834. -      else
  4835. -        output_addr_const (file, XEXP (x, 0));
  4836. -    }
  4837. +    case PLUS:
  4838. +      if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_INT
  4839. +      || GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT)
  4840. +    base_op = "fiadd";
  4841.        else
  4842. -    output_address (XEXP (x, 0));
  4843. -    }
  4844. -  else if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) == SFmode)
  4845. -    {
  4846. -      REAL_VALUE_TYPE r; long l;
  4847. -      REAL_VALUE_FROM_CONST_DOUBLE (r, x);
  4848. -      REAL_VALUE_TO_TARGET_SINGLE (r, l);
  4849. -      PRINT_IMMED_PREFIX (file);
  4850. -      fprintf (file, "0x%x", l);
  4851. -    }
  4852. - /* These float cases don't actually occur as immediate operands. */
  4853. - else if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) == DFmode)
  4854. -    {
  4855. -      REAL_VALUE_TYPE r; char dstr[30];
  4856. -      REAL_VALUE_FROM_CONST_DOUBLE (r, x);
  4857. -      REAL_VALUE_TO_DECIMAL (r, "%.22e", dstr);
  4858. -      fprintf (file, "%s", dstr);
  4859. -    }
  4860. -  else if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) == XFmode)
  4861. -    {
  4862. -      REAL_VALUE_TYPE r; char dstr[30];
  4863. -      REAL_VALUE_FROM_CONST_DOUBLE (r, x);
  4864. -      REAL_VALUE_TO_DECIMAL (r, "%.22e", dstr);
  4865. -      fprintf (file, "%s", dstr);
  4866. -    }
  4867. -  else 
  4868. -    {
  4869. -      if (code != 'P')
  4870. -    {
  4871. -      if (GET_CODE (x) == CONST_INT || GET_CODE (x) == CONST_DOUBLE)
  4872. -        PRINT_IMMED_PREFIX (file);
  4873. -      else if (GET_CODE (x) == CONST || GET_CODE (x) == SYMBOL_REF
  4874. -           || GET_CODE (x) == LABEL_REF)
  4875. -        PRINT_OFFSET_PREFIX (file);
  4876. -    }
  4877. -      if (flag_pic)
  4878. -    output_pic_addr_const (file, x, code);
  4879. +    base_op = "fadd";
  4880. +      break;
  4881. +
  4882. +    case MINUS:
  4883. +      if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_INT
  4884. +      || GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT)
  4885. +    base_op = "fisub";
  4886.        else
  4887. -    output_addr_const (file, x);
  4888. -    }
  4889. -}
  4890. -
  4891. -/* Print a memory operand whose address is ADDR.  */
  4892. +    base_op = "fsub";
  4893. +      break;
  4894.  
  4895. -void
  4896. -print_operand_address (file, addr)
  4897. -     FILE *file;
  4898. -     register rtx addr;
  4899. -{
  4900. -  register rtx reg1, reg2, breg, ireg;
  4901. -  rtx offset;
  4902. +    case MULT:
  4903. +      if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_INT
  4904. +      || GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT)
  4905. +    base_op = "fimul";
  4906. +      else
  4907. +    base_op = "fmul";
  4908. +      break;
  4909.  
  4910. -  switch (GET_CODE (addr))
  4911. -    {
  4912. -    case REG:
  4913. -      ADDR_BEG (file);
  4914. -      fprintf (file, "%se", RP);
  4915. -      fputs (hi_reg_name[REGNO (addr)], file);
  4916. -      ADDR_END (file);
  4917. +    case DIV:
  4918. +      if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_INT
  4919. +      || GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT)
  4920. +    base_op = "fidiv";
  4921. +      else
  4922. +    base_op = "fdiv";
  4923.        break;
  4924.  
  4925. +    default:
  4926. +      abort ();
  4927. +    }
  4928. +
  4929. +  strcpy (buf, base_op);
  4930. +
  4931. +  switch (GET_CODE (operands[3]))
  4932. +    {
  4933. +    case MULT:
  4934.      case PLUS:
  4935. -      reg1 = 0;
  4936. -      reg2 = 0;
  4937. -      ireg = 0;
  4938. -      breg = 0;
  4939. -      offset = 0;
  4940. -      if (CONSTANT_ADDRESS_P (XEXP (addr, 0)))
  4941. +      if (REG_P (operands[2]) && REGNO (operands[0]) == REGNO (operands[2]))
  4942.      {
  4943. -      offset = XEXP (addr, 0);
  4944. -      addr = XEXP (addr, 1);
  4945. +      temp = operands[2];
  4946. +      operands[2] = operands[1];
  4947. +      operands[1] = temp;
  4948.      }
  4949. -      else if (CONSTANT_ADDRESS_P (XEXP (addr, 1)))
  4950. +
  4951. +      if (GET_CODE (operands[2]) == MEM)
  4952. +    return strcat (buf, AS1 (%z2,%2));
  4953. +
  4954. +      if (NON_STACK_REG_P (operands[1]))
  4955.      {
  4956. -      offset = XEXP (addr, 1);
  4957. -      addr = XEXP (addr, 0);
  4958. +      output_op_from_reg (operands[1], strcat (buf, AS1 (%z0,%1)));
  4959. +      RET;
  4960.      }
  4961. -      if (GET_CODE (addr) != PLUS) ;
  4962. -      else if (GET_CODE (XEXP (addr, 0)) == MULT)
  4963. +      else if (NON_STACK_REG_P (operands[2]))
  4964.      {
  4965. -      reg1 = XEXP (addr, 0);
  4966. -      addr = XEXP (addr, 1);
  4967. +      output_op_from_reg (operands[2], strcat (buf, AS1 (%z0,%1)));
  4968. +      RET;
  4969.      }
  4970. -      else if (GET_CODE (XEXP (addr, 1)) == MULT)
  4971. -    {
  4972. -      reg1 = XEXP (addr, 1);
  4973. -      addr = XEXP (addr, 0);
  4974. -    }
  4975. -      else if (GET_CODE (XEXP (addr, 0)) == REG)
  4976. -    {
  4977. -      reg1 = XEXP (addr, 0);
  4978. -      addr = XEXP (addr, 1);
  4979. -    }
  4980. -      else if (GET_CODE (XEXP (addr, 1)) == REG)
  4981. -    {
  4982. -      reg1 = XEXP (addr, 1);
  4983. -      addr = XEXP (addr, 0);
  4984. -    }
  4985. -      if (GET_CODE (addr) == REG || GET_CODE (addr) == MULT)
  4986. -    {
  4987. -      if (reg1 == 0) reg1 = addr;
  4988. -      else reg2 = addr;
  4989. -      addr = 0;
  4990. -    }
  4991. -      if (offset != 0)
  4992. +
  4993. +      if (find_regno_note (insn, REG_DEAD, REGNO (operands[2])))
  4994. +    return strcat (buf, AS2 (p,%2,%0));
  4995. +
  4996. +      if (STACK_TOP_P (operands[0]))
  4997. +    return strcat (buf, AS2 (,%y2,%0));
  4998. +      else
  4999. +    return strcat (buf, AS2 (,%2,%0));
  5000. +
  5001. +    case MINUS:
  5002. +    case DIV:
  5003. +      if (GET_CODE (operands[1]) == MEM)
  5004. +    return strcat (buf, AS1 (r%z1,%1));
  5005. +
  5006. +      if (GET_CODE (operands[2]) == MEM)
  5007. +    return strcat (buf, AS1 (%z2,%2));
  5008. +
  5009. +      if (NON_STACK_REG_P (operands[1]))
  5010.      {
  5011. -      if (addr != 0) abort ();
  5012. -      addr = offset;
  5013. +      output_op_from_reg (operands[1], strcat (buf, AS1 (r%z0,%1)));
  5014. +      RET;
  5015.      }
  5016. -      if ((reg1 && GET_CODE (reg1) == MULT)
  5017. -      || (reg2 != 0 && REGNO_OK_FOR_BASE_P (REGNO (reg2))))
  5018. +      else if (NON_STACK_REG_P (operands[2]))
  5019.      {
  5020. -      breg = reg2;
  5021. -      ireg = reg1;
  5022. +      output_op_from_reg (operands[2], strcat (buf, AS1 (%z0,%1)));
  5023. +      RET;
  5024.      }
  5025. -      else if (reg1 != 0 && REGNO_OK_FOR_BASE_P (REGNO (reg1)))
  5026. +
  5027. +      if (! STACK_REG_P (operands[1]) || ! STACK_REG_P (operands[2]))
  5028. +    abort ();
  5029. +
  5030. +      if (find_regno_note (insn, REG_DEAD, REGNO (operands[2])))
  5031. +    return strcat (buf, AS2 (rp,%2,%0));
  5032. +
  5033. +      if (find_regno_note (insn, REG_DEAD, REGNO (operands[1])))
  5034. +    return strcat (buf, AS2 (p,%1,%0));
  5035. +
  5036. +      if (STACK_TOP_P (operands[0]))
  5037.      {
  5038. -      breg = reg1;
  5039. -      ireg = reg2;
  5040. +      if (STACK_TOP_P (operands[1]))
  5041. +        return strcat (buf, AS2 (,%y2,%0));
  5042. +      else
  5043. +        return strcat (buf, AS2 (r,%y1,%0));
  5044.      }
  5045. +      else if (STACK_TOP_P (operands[1]))
  5046. +    return strcat (buf, AS2 (,%1,%0));
  5047. +      else
  5048. +    return strcat (buf, AS2 (r,%2,%0));
  5049.  
  5050. -      if (ireg != 0 || breg != 0)
  5051. -    {
  5052. -      int scale = 1;
  5053. +    default:
  5054. +      abort ();
  5055. +    }
  5056. +}
  5057. +
  5058. +/* Output code for INSN to convert a float to a signed int.  OPERANDS
  5059. +   are the insn operands.  The output may be SFmode or DFmode and the
  5060. +   input operand may be SImode or DImode.  As a special case, make sure
  5061. +   that the 387 stack top dies if the output mode is DImode, because the
  5062. +   hardware requires this.  */
  5063.  
  5064. -      if (addr != 0)
  5065. -        {
  5066. -          if (flag_pic)
  5067. -        output_pic_addr_const (file, addr, 0);
  5068. +char *
  5069. +output_fix_trunc (insn, operands)
  5070. +     rtx insn;
  5071. +     rtx *operands;
  5072. +{
  5073. +  int stack_top_dies = find_regno_note (insn, REG_DEAD, FIRST_STACK_REG) != 0;
  5074. +  rtx xops[2];
  5075.  
  5076. -          else if (GET_CODE (addr) == LABEL_REF)
  5077. -        output_asm_label (addr);
  5078. +  if (! STACK_TOP_P (operands[1]) ||
  5079. +      (GET_MODE (operands[0]) == DImode && ! stack_top_dies))
  5080. +    abort ();
  5081.  
  5082. -          else
  5083. -        output_addr_const (file, addr);
  5084. -        }
  5085. +  xops[0] = GEN_INT (12);
  5086. +  xops[1] = operands[4];
  5087.  
  5088. -        if (ireg != 0 && GET_CODE (ireg) == MULT)
  5089. -        {
  5090. -          scale = INTVAL (XEXP (ireg, 1));
  5091. -          ireg = XEXP (ireg, 0);
  5092. -        }
  5093. +  output_asm_insn (AS1 (fnstc%W2,%2), operands);
  5094. +  output_asm_insn (AS2 (mov%L2,%2,%4), operands);
  5095. +  output_asm_insn (AS2 (mov%B1,%0,%h1), xops);
  5096. +  output_asm_insn (AS2 (mov%L4,%4,%3), operands);
  5097. +  output_asm_insn (AS1 (fldc%W3,%3), operands);
  5098.  
  5099. -      /* The stack pointer can only appear as a base register,
  5100. -         never an index register, so exchange the regs if it is wrong. */
  5101. +  if (NON_STACK_REG_P (operands[0]))
  5102. +    output_to_reg (operands[0], stack_top_dies);
  5103. +  else if (GET_CODE (operands[0]) == MEM)
  5104. +    {
  5105. +      if (stack_top_dies)
  5106. +    output_asm_insn (AS1 (fistp%z0,%0), operands);
  5107. +      else
  5108. +    output_asm_insn (AS1 (fist%z0,%0), operands);
  5109. +    }
  5110. +  else
  5111. +    abort ();
  5112.  
  5113. -      if (scale == 1 && ireg && REGNO (ireg) == STACK_POINTER_REGNUM)
  5114. -        {
  5115. -          rtx tmp;
  5116. +  return AS1 (fldc%W2,%2);
  5117. +}
  5118. +
  5119. +/* Output code for INSN to compare OPERANDS.  The two operands might
  5120. +   not have the same mode: one might be within a FLOAT or FLOAT_EXTEND
  5121. +   expression.  If the compare is in mode CCFPEQmode, use an opcode that
  5122. +   will not fault if a qNaN is present. */
  5123.  
  5124. -          tmp = breg;
  5125. -          breg = ireg;
  5126. -          ireg = tmp;
  5127. -        }
  5128. +char *
  5129. +output_float_compare (insn, operands)
  5130. +     rtx insn;
  5131. +     rtx *operands;
  5132. +{
  5133. +  int stack_top_dies;
  5134. +  rtx body = XVECEXP (PATTERN (insn), 0, 0);
  5135. +  int unordered_compare = GET_MODE (SET_SRC (body)) == CCFPEQmode;
  5136.  
  5137. -      /* output breg+ireg*scale */
  5138. -      PRINT_B_I_S (breg, ireg, scale, file);
  5139. -      break;
  5140. -    }
  5141. +  /* intel1 */
  5142. +  rtx tmp;
  5143. +  if (! STACK_TOP_P (operands[0]))
  5144. +    {
  5145. +      tmp = operands[0];
  5146. +      operands[0] = operands[1];
  5147. +      operands[1] = tmp;
  5148. +      cc_status.flags |= CC_REVERSED;
  5149. +    }
  5150. +    
  5151. +  if (! STACK_TOP_P (operands[0]))
  5152. +    abort ();
  5153.  
  5154. -    case MULT:
  5155. -      {
  5156. -    int scale;
  5157. -    if (GET_CODE (XEXP (addr, 0)) == CONST_INT)
  5158. -      {
  5159. -        scale = INTVAL (XEXP (addr, 0));
  5160. -        ireg = XEXP (addr, 1);
  5161. -      }
  5162. -    else
  5163. -      {
  5164. -        scale = INTVAL (XEXP (addr, 1));
  5165. -        ireg = XEXP (addr, 0);
  5166. -      }
  5167. -    output_addr_const (file, const0_rtx);
  5168. -    PRINT_B_I_S ((rtx) 0, ireg, scale, file);
  5169. -      }
  5170. -      break;
  5171. +  stack_top_dies = find_regno_note (insn, REG_DEAD, FIRST_STACK_REG) != 0;
  5172.  
  5173. -    default:
  5174. -      if (GET_CODE (addr) == CONST_INT
  5175. -      && INTVAL (addr) < 0x8000
  5176. -      && INTVAL (addr) >= -0x8000)
  5177. -    fprintf (file, "%d", INTVAL (addr));
  5178. +  if (STACK_REG_P (operands[1])
  5179. +      && stack_top_dies
  5180. +      && find_regno_note (insn, REG_DEAD, REGNO (operands[1]))
  5181. +      && REGNO (operands[1]) != FIRST_STACK_REG)
  5182. +    {
  5183. +      /* If both the top of the 387 stack dies, and the other operand
  5184. +     is also a stack register that dies, then this must be a
  5185. +     `fcompp' float compare */
  5186. +
  5187. +      if (unordered_compare)
  5188. +    output_asm_insn ("fucompp", operands);
  5189.        else
  5190. -    {
  5191. -      if (flag_pic)
  5192. -        output_pic_addr_const (file, addr, 0);
  5193. -      else
  5194. -        output_addr_const (file, addr);
  5195. -    }
  5196. +    output_asm_insn ("fcompp", operands);
  5197. +    }
  5198. +  else
  5199. +    {
  5200. +      static char buf[100];
  5201. +
  5202. +      /* Decide if this is the integer or float compare opcode, or the
  5203. +     unordered float compare. */
  5204. +
  5205. +      if (unordered_compare)
  5206. +    strcpy (buf, "fucom");
  5207. +      else if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_FLOAT)
  5208. +    strcpy (buf, "fcom");
  5209. +      else
  5210. +    strcpy (buf, "ficom");
  5211. +
  5212. +      /* Modify the opcode if the 387 stack is to be popped. */
  5213. +
  5214. +      if (stack_top_dies)
  5215. +    strcat (buf, "p");
  5216. +
  5217. +      if (NON_STACK_REG_P (operands[1]))
  5218. +    output_op_from_reg (operands[1], strcat (buf, AS1 (%z0,%1)));
  5219. +      else
  5220. +        output_asm_insn (strcat (buf, AS1 (%z1,%y1)), operands);
  5221.      }
  5222. +
  5223. +  /* Now retrieve the condition code. */
  5224. +
  5225. +  return output_fp_cc0_set (insn);
  5226.  }
  5227.  
  5228. -/* Set the cc_status for the results of an insn whose pattern is EXP.
  5229. -   On the 80386, we assume that only test and compare insns, as well
  5230. -   as SI, HI, & DI mode ADD, SUB, NEG, AND, IOR, XOR, ASHIFT,
  5231. -   ASHIFTRT, and LSHIFTRT instructions set the condition codes usefully.
  5232. -   Also, we assume that jumps, moves and sCOND don't affect the condition
  5233. -   codes.  All else clobbers the condition codes, by assumption.
  5234. +/* Output opcodes to transfer the results of FP compare or test INSN
  5235. +   from the FPU to the CPU flags.  If TARGET_IEEE_FP, ensure that if the
  5236. +   result of the compare or test is unordered, no comparison operator
  5237. +   succeeds except NE.  Return an output template, if any.  */
  5238.  
  5239. -   We assume that ALL integer add, minus, etc. instructions effect the
  5240. -   condition codes.  This MUST be consistent with i386.md.
  5241. +char *
  5242. +output_fp_cc0_set (insn)
  5243. +     rtx insn;
  5244. +{
  5245. +  rtx xops[3];
  5246. +  rtx unordered_label;
  5247. +  rtx next;
  5248. +  enum rtx_code code;
  5249.  
  5250. -   We don't record any float test or compare - the redundant test &
  5251. -   compare check in final.c does not handle stack-like regs correctly. */
  5252. +  xops[0] = gen_rtx (REG, HImode, 0);
  5253. +  output_asm_insn (AS1 (fnsts%W0,%0), xops);
  5254.  
  5255. -void
  5256. -notice_update_cc (exp)
  5257. -     rtx exp;
  5258. -{
  5259. -  if (GET_CODE (exp) == SET)
  5260. +
  5261. +  if (! TARGET_IEEE_FP)
  5262.      {
  5263. -      /* Jumps do not alter the cc's.  */
  5264. -      if (SET_DEST (exp) == pc_rtx)
  5265. -    return;
  5266. -      /* Moving register or memory into a register:
  5267. -     it doesn't alter the cc's, but it might invalidate
  5268. -     the RTX's which we remember the cc's came from.
  5269. -     (Note that moving a constant 0 or 1 MAY set the cc's).  */
  5270. -      if (REG_P (SET_DEST (exp))
  5271. -      && (REG_P (SET_SRC (exp)) || GET_CODE (SET_SRC (exp)) == MEM
  5272. -          || GET_RTX_CLASS (GET_CODE (SET_SRC (exp))) == '<'))
  5273. -    {
  5274. -      if (cc_status.value1
  5275. -          && reg_overlap_mentioned_p (SET_DEST (exp), cc_status.value1))
  5276. -        cc_status.value1 = 0;
  5277. -      if (cc_status.value2
  5278. -          && reg_overlap_mentioned_p (SET_DEST (exp), cc_status.value2))
  5279. -        cc_status.value2 = 0;
  5280. -      return;
  5281. -    }
  5282. -      /* Moving register into memory doesn't alter the cc's.
  5283. -     It may invalidate the RTX's which we remember the cc's came from.  */
  5284. -      if (GET_CODE (SET_DEST (exp)) == MEM
  5285. -      && (REG_P (SET_SRC (exp))
  5286. -          || GET_RTX_CLASS (GET_CODE (SET_SRC (exp))) == '<'))
  5287. -    {
  5288. -      if (cc_status.value1 && GET_CODE (cc_status.value1) == MEM)
  5289. -        cc_status.value1 = 0;
  5290. -      if (cc_status.value2 && GET_CODE (cc_status.value2) == MEM)
  5291. -        cc_status.value2 = 0;
  5292. -      return;
  5293. -    }
  5294. -      /* Function calls clobber the cc's.  */
  5295. -      else if (GET_CODE (SET_SRC (exp)) == CALL)
  5296. -    {
  5297. -      CC_STATUS_INIT;
  5298. -      return;
  5299. -    }
  5300. -      /* Tests and compares set the cc's in predictable ways.  */
  5301. -      else if (SET_DEST (exp) == cc0_rtx)
  5302. -    {
  5303. -      CC_STATUS_INIT;
  5304. -      cc_status.value1 = SET_SRC (exp);
  5305. -      return;
  5306. -    }
  5307. -      /* Certain instructions effect the condition codes. */
  5308. -      else if (GET_MODE (SET_SRC (exp)) == SImode
  5309. -           || GET_MODE (SET_SRC (exp)) == HImode
  5310. -           || GET_MODE (SET_SRC (exp)) == QImode)
  5311. -    switch (GET_CODE (SET_SRC (exp)))
  5312. -      {
  5313. -      case ASHIFTRT: case LSHIFTRT:
  5314. -      case ASHIFT:
  5315. -        /* Shifts on the 386 don't set the condition codes if the
  5316. -           shift count is zero. */
  5317. -        if (GET_CODE (XEXP (SET_SRC (exp), 1)) != CONST_INT)
  5318. -          {
  5319. -        CC_STATUS_INIT;
  5320. -        break;
  5321. -          }
  5322. -        /* We assume that the CONST_INT is non-zero (this rtx would
  5323. -           have been deleted if it were zero. */
  5324. +      /* intel1 */
  5325. +      if (!(cc_status.flags & CC_REVERSED))
  5326. +        {
  5327. +          next = next_cc0_user (insn);
  5328. +        
  5329. +          if (GET_CODE (next) == JUMP_INSN
  5330. +              && GET_CODE (PATTERN (next)) == SET
  5331. +              && SET_DEST (PATTERN (next)) == pc_rtx
  5332. +              && GET_CODE (SET_SRC (PATTERN (next))) == IF_THEN_ELSE)
  5333. +            {
  5334. +              code = GET_CODE (XEXP (SET_SRC (PATTERN (next)), 0));
  5335. +            }
  5336. +          else if (GET_CODE (PATTERN (next)) == SET)
  5337. +            {
  5338. +              code = GET_CODE (SET_SRC (PATTERN (next)));
  5339. +            }
  5340. +          else
  5341. +            {
  5342. +              return "sahf";
  5343. +            }
  5344. +          if (code == GT || code == LT || code == EQ || code == NE
  5345. +              || code == LE || code == GE)
  5346. +            { /* We will test eax directly */
  5347. +              cc_status.flags |= CC_TEST_AX;
  5348. +              RET;
  5349. +            }
  5350. +        }
  5351. +      return "sahf";
  5352. +    }
  5353.  
  5354. -      case PLUS: case MINUS: case NEG:
  5355. -      case AND: case IOR: case XOR:
  5356. -        cc_status.flags = CC_NO_OVERFLOW;
  5357. -        cc_status.value1 = SET_SRC (exp);
  5358. -        cc_status.value2 = SET_DEST (exp);
  5359. -        break;
  5360. +  next = next_cc0_user (insn);
  5361. +  if (next == NULL_RTX)
  5362. +    abort ();
  5363.  
  5364. -      default:
  5365. -        CC_STATUS_INIT;
  5366. -      }
  5367. -      else
  5368. -    {
  5369. -      CC_STATUS_INIT;
  5370. -    }
  5371. +  if (GET_CODE (next) == JUMP_INSN
  5372. +      && GET_CODE (PATTERN (next)) == SET
  5373. +      && SET_DEST (PATTERN (next)) == pc_rtx
  5374. +      && GET_CODE (SET_SRC (PATTERN (next))) == IF_THEN_ELSE)
  5375. +    {
  5376. +      code = GET_CODE (XEXP (SET_SRC (PATTERN (next)), 0));
  5377.      }
  5378. -  else if (GET_CODE (exp) == PARALLEL
  5379. -       && GET_CODE (XVECEXP (exp, 0, 0)) == SET)
  5380. +  else if (GET_CODE (PATTERN (next)) == SET)
  5381.      {
  5382. -      if (SET_DEST (XVECEXP (exp, 0, 0)) == pc_rtx)
  5383. -    return;
  5384. -      if (SET_DEST (XVECEXP (exp, 0, 0)) == cc0_rtx)
  5385. -    {
  5386. -      CC_STATUS_INIT;
  5387. -      if (stack_regs_mentioned_p (SET_SRC (XVECEXP (exp, 0, 0))))
  5388. -        cc_status.flags |= CC_IN_80387;
  5389. -      else
  5390. -        cc_status.value1 = SET_SRC (XVECEXP (exp, 0, 0));
  5391. -      return;
  5392. -    }
  5393. -      CC_STATUS_INIT;
  5394. +      code = GET_CODE (SET_SRC (PATTERN (next)));
  5395.      }
  5396.    else
  5397. +    abort ();
  5398. +
  5399. +  xops[0] = gen_rtx (REG, QImode, 0);
  5400. +
  5401. +  switch (code)
  5402.      {
  5403. -      CC_STATUS_INIT;
  5404. +    case GT:
  5405. +      xops[1] = GEN_INT (0x45);
  5406. +      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  5407. +      /* je label */
  5408. +      break;
  5409. +
  5410. +    case LT:
  5411. +      xops[1] = GEN_INT (0x45);
  5412. +      xops[2] = GEN_INT (0x01);
  5413. +      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  5414. +      output_asm_insn (AS2 (cmp%B0,%2,%h0), xops);
  5415. +      /* je label */
  5416. +      break;
  5417. +
  5418. +    case GE:
  5419. +      xops[1] = GEN_INT (0x05);
  5420. +      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  5421. +      /* je label */
  5422. +      break;
  5423. +
  5424. +    case LE:
  5425. +      xops[1] = GEN_INT (0x45);
  5426. +      xops[2] = GEN_INT (0x40);
  5427. +      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  5428. +      output_asm_insn (AS1 (dec%B0,%h0), xops);
  5429. +      output_asm_insn (AS2 (cmp%B0,%2,%h0), xops);
  5430. +      /* jb label */
  5431. +      break;
  5432. +
  5433. +    case EQ:
  5434. +      xops[1] = GEN_INT (0x45);
  5435. +      xops[2] = GEN_INT (0x40);
  5436. +      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  5437. +      output_asm_insn (AS2 (cmp%B0,%2,%h0), xops);
  5438. +      /* je label */
  5439. +      break;
  5440. +
  5441. +    case NE:
  5442. +      xops[1] = GEN_INT (0x44);
  5443. +      xops[2] = GEN_INT (0x40);
  5444. +      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  5445. +      output_asm_insn (AS2 (xor%B0,%2,%h0), xops);
  5446. +      /* jne label */
  5447. +      break;
  5448. +
  5449. +    case GTU:
  5450. +    case LTU:
  5451. +    case GEU:
  5452. +    case LEU:
  5453. +    default:
  5454. +      abort ();
  5455.      }
  5456. +  RET;
  5457. +}
  5458. +
  5459. +#define MAX_386_STACK_LOCALS 2
  5460. +
  5461. +static rtx i386_stack_locals[(int) MAX_MACHINE_MODE][MAX_386_STACK_LOCALS];
  5462. +
  5463. +/* Define the structure for the machine field in struct function.  */
  5464. +struct machine_function
  5465. +{
  5466. +  rtx i386_stack_locals[(int) MAX_MACHINE_MODE][MAX_386_STACK_LOCALS];
  5467. +};
  5468. +
  5469. +/* Functions to save and restore i386_stack_locals.
  5470. +   These will be called, via pointer variables,
  5471. +   from push_function_context and pop_function_context.  */
  5472. +
  5473. +void
  5474. +save_386_machine_status (p)
  5475. +     struct function *p;
  5476. +{
  5477. +  p->machine = (struct machine_function *) xmalloc (sizeof i386_stack_locals);
  5478. +  bcopy (i386_stack_locals, p->machine->i386_stack_locals,
  5479. +     sizeof i386_stack_locals);
  5480.  }
  5481. -
  5482. -/* Split one or more DImode RTL references into pairs of SImode
  5483. -   references.  The RTL can be REG, offsettable MEM, integer constant, or
  5484. -   CONST_DOUBLE.  "operands" is a pointer to an array of DImode RTL to
  5485. -   split and "num" is its length.  lo_half and hi_half are output arrays
  5486. -   that parallel "operands". */
  5487.  
  5488.  void
  5489. -split_di (operands, num, lo_half, hi_half)
  5490. -     rtx operands[];
  5491. -     int num;
  5492. -     rtx lo_half[], hi_half[];
  5493. +restore_386_machine_status (p)
  5494. +     struct function *p;
  5495.  {
  5496. -  while (num--)
  5497. -    {
  5498. -      if (GET_CODE (operands[num]) == REG)
  5499. -    {
  5500. -      lo_half[num] = gen_rtx (REG, SImode, REGNO (operands[num]));
  5501. -      hi_half[num] = gen_rtx (REG, SImode, REGNO (operands[num]) + 1);
  5502. -    }
  5503. -      else if (CONSTANT_P (operands[num]))
  5504. -    {
  5505. -      split_double (operands[num], &lo_half[num], &hi_half[num]);
  5506. -    }
  5507. -      else if (offsettable_memref_p (operands[num]))
  5508. -    {
  5509. -      lo_half[num] = operands[num];
  5510. -      hi_half[num] = adj_offsettable_operand (operands[num], 4);
  5511. -    }
  5512. -      else
  5513. -    abort();
  5514. -    }
  5515. +  bcopy (p->machine->i386_stack_locals, i386_stack_locals,
  5516. +     sizeof i386_stack_locals);
  5517. +  free (p->machine);
  5518.  }
  5519. -
  5520. -/* Return 1 if this is a valid binary operation on a 387.
  5521. -   OP is the expression matched, and MODE is its mode. */
  5522.  
  5523. -int
  5524. -binary_387_op (op, mode)
  5525. -    register rtx op;
  5526. -    enum machine_mode mode;
  5527. +/* Clear stack slot assignments remembered from previous functions.
  5528. +   This is called from INIT_EXPANDERS once before RTL is emitted for each
  5529. +   function.  */
  5530. +
  5531. +void
  5532. +clear_386_stack_locals ()
  5533.  {
  5534. -  if (mode != VOIDmode && mode != GET_MODE (op))
  5535. -    return 0;
  5536. +  enum machine_mode mode;
  5537. +  int n;
  5538.  
  5539. -  switch (GET_CODE (op))
  5540. -    {
  5541. -    case PLUS:
  5542. -    case MINUS:
  5543. -    case MULT:
  5544. -    case DIV:
  5545. -      return GET_MODE_CLASS (GET_MODE (op)) == MODE_FLOAT;
  5546. +  for (mode = VOIDmode; (int) mode < (int) MAX_MACHINE_MODE;
  5547. +       mode = (enum machine_mode) ((int) mode + 1))
  5548. +    for (n = 0; n < MAX_386_STACK_LOCALS; n++)
  5549. +      i386_stack_locals[(int) mode][n] = NULL_RTX;
  5550.  
  5551. -    default:
  5552. -      return 0;
  5553. -    }
  5554. +  /* Arrange to save and restore i386_stack_locals around nested functions.  */
  5555. +  save_machine_status = save_386_machine_status;
  5556. +  restore_machine_status = restore_386_machine_status;
  5557.  }
  5558.  
  5559. -
  5560. -/* Return 1 if this is a valid shift or rotate operation on a 386.
  5561. -   OP is the expression matched, and MODE is its mode. */
  5562. +/* Return a MEM corresponding to a stack slot with mode MODE.
  5563. +   Allocate a new slot if necessary.
  5564.  
  5565. -int
  5566. -shift_op (op, mode)
  5567. -    register rtx op;
  5568. -    enum machine_mode mode;
  5569. +   The RTL for a function can have several slots available: N is
  5570. +   which slot to use.  */
  5571. +
  5572. +rtx
  5573. +assign_386_stack_local (mode, n)
  5574. +     enum machine_mode mode;
  5575. +     int n;
  5576.  {
  5577. -  rtx operand = XEXP (op, 0);
  5578. +  if (n < 0 || n >= MAX_386_STACK_LOCALS)
  5579. +    abort ();
  5580.  
  5581. -  if (mode != VOIDmode && mode != GET_MODE (op))
  5582. -    return 0;
  5583. +  if (i386_stack_locals[(int) mode][n] == NULL_RTX)
  5584. +  {
  5585. +    i386_stack_locals[(int) mode][n]
  5586. +      = assign_stack_local (mode, GET_MODE_SIZE (mode), 0);
  5587. +  }
  5588. +  return i386_stack_locals[(int) mode][n];
  5589. +}
  5590.  
  5591. -  if (GET_MODE (operand) != GET_MODE (op)
  5592. -      || GET_MODE_CLASS (GET_MODE (op)) != MODE_INT)
  5593. -    return 0;
  5594.  
  5595. -  return (GET_CODE (op) == ASHIFT
  5596. -      || GET_CODE (op) == ASHIFTRT
  5597. -      || GET_CODE (op) == LSHIFTRT
  5598. -      || GET_CODE (op) == ROTATE
  5599. -      || GET_CODE (op) == ROTATERT);
  5600. +/* all functions after here added by intel1 */
  5601. +/* intel1 */
  5602. +int is_mul(op,mode)
  5603. +    register rtx op;
  5604. +    enum machine_mode mode;
  5605. +{
  5606. +  return(GET_CODE(op)==MULT);
  5607.  }
  5608.  
  5609. -/* Return 1 if OP is COMPARE rtx with mode VOIDmode.
  5610. -   MODE is not used.  */
  5611. -
  5612. -int
  5613. -VOIDmode_compare_op (op, mode)
  5614. +/* intel1 */
  5615. +int is_div(op,mode)
  5616.      register rtx op;
  5617.      enum machine_mode mode;
  5618.  {
  5619. -  return GET_CODE (op) == COMPARE && GET_MODE (op) == VOIDmode;
  5620. +  return(GET_CODE(op)==DIV);
  5621.  }
  5622. -
  5623. -/* Output code to perform a 387 binary operation in INSN, one of PLUS,
  5624. -   MINUS, MULT or DIV.  OPERANDS are the insn operands, where operands[3]
  5625. -   is the expression of the binary operation.  The output may either be
  5626. -   emitted here, or returned to the caller, like all output_* functions.
  5627.  
  5628. -   There is no guarantee that the operands are the same mode, as they
  5629. -   might be within FLOAT or FLOAT_EXTEND expressions. */
  5630. +/* Create a new copy of an rtx.
  5631. +   Recursively copies the operands of the rtx,
  5632. +   except for those few rtx codes that are sharable.
  5633. +   Doesn't share CONST  */
  5634.  
  5635. -char *
  5636. -output_387_binary_op (insn, operands)
  5637. -     rtx insn;
  5638. -     rtx *operands;
  5639. +rtx
  5640. +copy_all_rtx (orig)
  5641. +     register rtx orig;
  5642.  {
  5643. -  rtx temp;
  5644. -  char *base_op;
  5645. -  static char buf[100];
  5646. +  register rtx copy;
  5647. +  register int i, j;
  5648. +  register RTX_CODE code;
  5649. +  register char *format_ptr;
  5650.  
  5651. -  switch (GET_CODE (operands[3]))
  5652. +  code = GET_CODE (orig);
  5653. +
  5654. +  switch (code)
  5655.      {
  5656. -    case PLUS:
  5657. -      if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_INT
  5658. -      || GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT)
  5659. -    base_op = "fiadd";
  5660. -      else
  5661. -    base_op = "fadd";
  5662. -      break;
  5663. +    case REG:
  5664. +    case QUEUED:
  5665. +    case CONST_INT:
  5666. +    case CONST_DOUBLE:
  5667. +    case SYMBOL_REF:
  5668. +    case CODE_LABEL:
  5669. +    case PC:
  5670. +    case CC0:
  5671. +    case SCRATCH:
  5672. +      /* SCRATCH must be shared because they represent distinct values. */
  5673. +      return orig;
  5674.  
  5675. -    case MINUS:
  5676. -      if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_INT
  5677. -      || GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT)
  5678. -    base_op = "fisub";
  5679. -      else
  5680. -    base_op = "fsub";
  5681. +#if 0
  5682. +    case CONST:
  5683. +      /* CONST can be shared if it contains a SYMBOL_REF.  If it contains
  5684. +     a LABEL_REF, it isn't sharable.  */
  5685. +      if (GET_CODE (XEXP (orig, 0)) == PLUS
  5686. +      && GET_CODE (XEXP (XEXP (orig, 0), 0)) == SYMBOL_REF
  5687. +      && GET_CODE (XEXP (XEXP (orig, 0), 1)) == CONST_INT)
  5688. +    return orig;
  5689.        break;
  5690. +#endif
  5691. +      /* A MEM with a constant address is not sharable.  The problem is that
  5692. +     the constant address may need to be reloaded.  If the mem is shared,
  5693. +     then reloading one copy of this mem will cause all copies to appear
  5694. +     to have been reloaded.  */
  5695. +    }
  5696. +
  5697. +  copy = rtx_alloc (code);
  5698. +  PUT_MODE (copy, GET_MODE (orig));
  5699. +  copy->in_struct = orig->in_struct;
  5700. +  copy->volatil = orig->volatil;
  5701. +  copy->unchanging = orig->unchanging;
  5702. +  copy->integrated = orig->integrated;
  5703. +  /* intel1 */
  5704. +  copy->is_spill_rtx = orig->is_spill_rtx;
  5705. +  
  5706. +  format_ptr = GET_RTX_FORMAT (GET_CODE (copy));
  5707. +
  5708. +  for (i = 0; i < GET_RTX_LENGTH (GET_CODE (copy)); i++)
  5709. +    {
  5710. +      switch (*format_ptr++)
  5711. +    {
  5712. +    case 'e':
  5713. +      XEXP (copy, i) = XEXP (orig, i);
  5714. +      if (XEXP (orig, i) != NULL)
  5715. +        XEXP (copy, i) = copy_rtx (XEXP (orig, i));
  5716. +      break;
  5717.  
  5718. -    case MULT:
  5719. -      if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_INT
  5720. -      || GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT)
  5721. -    base_op = "fimul";
  5722. -      else
  5723. -    base_op = "fmul";
  5724. -      break;
  5725. +    case '0':
  5726. +    case 'u':
  5727. +      XEXP (copy, i) = XEXP (orig, i);
  5728. +      break;
  5729.  
  5730. -    case DIV:
  5731. -      if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_INT
  5732. -      || GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT)
  5733. -    base_op = "fidiv";
  5734. -      else
  5735. -    base_op = "fdiv";
  5736. -      break;
  5737. +    case 'E':
  5738. +    case 'V':
  5739. +      XVEC (copy, i) = XVEC (orig, i);
  5740. +      if (XVEC (orig, i) != NULL)
  5741. +        {
  5742. +          XVEC (copy, i) = rtvec_alloc (XVECLEN (orig, i));
  5743. +          for (j = 0; j < XVECLEN (copy, i); j++)
  5744. +        XVECEXP (copy, i, j) = copy_rtx (XVECEXP (orig, i, j));
  5745. +        }
  5746. +      break;
  5747.  
  5748. -    default:
  5749. -      abort ();
  5750. +    case 'w':
  5751. +      XWINT (copy, i) = XWINT (orig, i);
  5752. +      break;
  5753. +
  5754. +    case 'i':
  5755. +      XINT (copy, i) = XINT (orig, i);
  5756. +      break;
  5757. +
  5758. +    case 's':
  5759. +    case 'S':
  5760. +      XSTR (copy, i) = XSTR (orig, i);
  5761. +      break;
  5762. +
  5763. +    default:
  5764. +      abort ();
  5765. +    }
  5766. +    }
  5767. +  return copy;
  5768. +}
  5769. +
  5770. +
  5771. +/* try to rewrite a memory address to make it valid */
  5772. +void 
  5773. +rewrite_address (mem_rtx)
  5774. +     rtx mem_rtx;
  5775. +{
  5776. +  rtx index_rtx, base_rtx, offset_rtx, scale_rtx, ret_rtx;
  5777. +  int scale = 1;
  5778. +  int offset_adjust = 0;
  5779. +  int was_only_offset = 0;
  5780. +  rtx mem_addr = XEXP (mem_rtx, 0);
  5781. +  char *storage = (char *) oballoc (0);
  5782. +  int in_struct = 0;
  5783. +  int is_spill_rtx = 0;
  5784. +
  5785. +  in_struct = MEM_IN_STRUCT_P (mem_rtx);
  5786. +  is_spill_rtx = RTX_IS_SPILL_P (mem_rtx);
  5787. +
  5788. +  if (GET_CODE (mem_addr) == PLUS &&
  5789. +      GET_CODE (XEXP (mem_addr, 1)) == PLUS &&
  5790. +      GET_CODE (XEXP (XEXP (mem_addr, 1), 0)) == REG)
  5791. +    {                /* this part is utilized by the combiner */
  5792. +      ret_rtx =
  5793. +    gen_rtx (PLUS, GET_MODE (mem_addr),
  5794. +         gen_rtx (PLUS, GET_MODE (XEXP (mem_addr, 1)),
  5795. +              XEXP (mem_addr, 0),
  5796. +              XEXP (XEXP (mem_addr, 1), 0)),
  5797. +         XEXP (XEXP (mem_addr, 1), 1));
  5798. +      if (memory_address_p (GET_MODE (mem_rtx), ret_rtx))
  5799. +    {
  5800. +      XEXP (mem_rtx, 0) = ret_rtx;
  5801. +      RTX_IS_SPILL_P (ret_rtx) = is_spill_rtx;
  5802. +      return;
  5803. +    }
  5804. +      obfree (storage);
  5805. +    }
  5806. +
  5807. +  /* this part is utilized by loop.c */
  5808. +  /* If the address contains PLUS (reg,const) and this pattern is invalid
  5809. +     in this case - try to rewrite the address to make it valid  intel1
  5810. +  */
  5811. +  storage = (char *) oballoc (0);
  5812. +  index_rtx = base_rtx = offset_rtx = NULL;
  5813. +  /* find the base index and offset elements of the memory address */
  5814. +  if (GET_CODE (mem_addr) == PLUS)
  5815. +    {
  5816. +      if (GET_CODE (XEXP (mem_addr, 0)) == REG)
  5817. +    {
  5818. +      if (GET_CODE (XEXP (mem_addr, 1)) == REG)
  5819. +        {
  5820. +          base_rtx = XEXP (mem_addr, 1);
  5821. +          index_rtx = XEXP (mem_addr, 0);
  5822. +        }
  5823. +      else
  5824. +        {
  5825. +          base_rtx = XEXP (mem_addr, 0);
  5826. +          offset_rtx = XEXP (mem_addr, 1);
  5827. +        }
  5828. +    }
  5829. +      else if (GET_CODE (XEXP (mem_addr, 0)) == MULT)
  5830. +    {
  5831. +      index_rtx = XEXP (mem_addr, 0);
  5832. +      if (GET_CODE (XEXP (mem_addr, 1)) == REG)
  5833. +        {
  5834. +          base_rtx = XEXP (mem_addr, 1);
  5835. +        }
  5836. +      else
  5837. +        {
  5838. +          offset_rtx = XEXP (mem_addr, 1);
  5839. +        }
  5840. +    }
  5841. +      else if (GET_CODE (XEXP (mem_addr, 0)) == PLUS)
  5842. +    {
  5843. +      /* intel1 */
  5844. +      if (GET_CODE (XEXP (XEXP (mem_addr, 0), 0)) == PLUS &&
  5845. +          GET_CODE (XEXP (XEXP (XEXP (mem_addr, 0), 0), 0)) == MULT &&
  5846. +          GET_CODE (XEXP (XEXP (XEXP (XEXP (mem_addr, 0), 0), 0), 0)) == REG &&
  5847. +          GET_CODE (XEXP (XEXP (XEXP (XEXP (mem_addr, 0), 0), 0), 1)) == CONST_INT &&
  5848. +          GET_CODE (XEXP (XEXP (XEXP (mem_addr, 0), 0), 1)) == CONST_INT &&
  5849. +          GET_CODE (XEXP (XEXP (mem_addr, 0), 1)) == REG &&
  5850. +          GET_CODE (XEXP (mem_addr, 1)) == SYMBOL_REF)
  5851. +        {
  5852. +          index_rtx = XEXP (XEXP (XEXP (mem_addr, 0), 0), 0);
  5853. +          offset_rtx = XEXP (mem_addr, 1);
  5854. +          base_rtx = XEXP (XEXP (mem_addr, 0), 1);
  5855. +          offset_adjust = INTVAL (XEXP (XEXP (XEXP (mem_addr, 0), 0), 1));
  5856. +        }
  5857. +      else
  5858. +        {
  5859. +          offset_rtx = XEXP (mem_addr, 1);
  5860. +          index_rtx = XEXP (XEXP (mem_addr, 0), 0);
  5861. +          base_rtx = XEXP (XEXP (mem_addr, 0), 1);
  5862. +        }
  5863. +    }
  5864. +      else if (GET_CODE (XEXP (mem_addr, 0)) == CONST_INT)
  5865. +    {
  5866. +      was_only_offset = 1;
  5867. +      index_rtx = NULL;
  5868. +      base_rtx = NULL;
  5869. +      offset_rtx = XEXP (mem_addr, 1);
  5870. +      offset_adjust = INTVAL (XEXP (mem_addr, 0));
  5871. +      if (offset_adjust == 0)
  5872. +        {
  5873. +          XEXP (mem_rtx, 0) = offset_rtx;
  5874. +          RTX_IS_SPILL_P (XEXP (mem_rtx, 0)) = is_spill_rtx;
  5875. +          return;
  5876. +        }
  5877. +    }
  5878. +      else
  5879. +    {
  5880. +      obfree (storage);
  5881. +      return;
  5882. +    }
  5883. +    }
  5884. +  else if (GET_CODE (mem_addr) == MULT)
  5885. +    {
  5886. +      index_rtx = mem_addr;
  5887. +    }
  5888. +  else
  5889. +    {
  5890. +      obfree (storage);
  5891. +      return;
  5892. +    }
  5893. +  if (index_rtx && GET_CODE (index_rtx) == MULT)
  5894. +    {
  5895. +      if (GET_CODE (XEXP (index_rtx, 1)) != CONST_INT)
  5896. +    {
  5897. +      obfree (storage);
  5898. +      return;
  5899. +    }
  5900. +      scale_rtx = XEXP (index_rtx, 1);
  5901. +      scale = INTVAL (scale_rtx);
  5902. +      index_rtx = copy_all_rtx (XEXP (index_rtx, 0));
  5903. +    }
  5904. +  /* now find which of the elements are invalid and try to fix them */
  5905. +  if (index_rtx && GET_CODE (index_rtx) == CONST_INT && base_rtx == NULL)
  5906. +    {
  5907. +      offset_adjust = INTVAL (index_rtx) * scale;
  5908. +      if (offset_rtx && GET_CODE (offset_rtx) == CONST &&
  5909. +      GET_CODE (XEXP (offset_rtx, 0)) == PLUS)
  5910. +    {
  5911. +      if (GET_CODE (XEXP (XEXP (offset_rtx, 0), 0)) == SYMBOL_REF &&
  5912. +          GET_CODE (XEXP (XEXP (offset_rtx, 0), 1)) == CONST_INT)
  5913. +        {
  5914. +          offset_rtx = copy_all_rtx (offset_rtx);
  5915. +          XEXP (XEXP (offset_rtx, 0), 1) =
  5916. +        gen_rtx (CONST_INT, 0, INTVAL (XEXP (XEXP (offset_rtx, 0), 1)) + offset_adjust);
  5917. +          if (!CONSTANT_P (offset_rtx))
  5918. +        {
  5919. +          obfree (storage);
  5920. +          return;
  5921. +        }
  5922. +        }
  5923. +    }
  5924. +      else if (offset_rtx && GET_CODE (offset_rtx) == SYMBOL_REF)
  5925. +    {
  5926. +      offset_rtx =
  5927. +        gen_rtx (CONST, GET_MODE (offset_rtx),
  5928. +             gen_rtx (PLUS, GET_MODE (offset_rtx),
  5929. +                  offset_rtx,
  5930. +                  gen_rtx (CONST_INT, 0, offset_adjust)));
  5931. +      if (!CONSTANT_P (offset_rtx))
  5932. +        {
  5933. +          obfree (storage);
  5934. +          return;
  5935. +        }
  5936. +    }
  5937. +      else if (offset_rtx && GET_CODE (offset_rtx) == CONST_INT)
  5938. +    {
  5939. +      offset_rtx = gen_rtx (CONST_INT, 0, INTVAL (offset_rtx) + offset_adjust);
  5940. +    }
  5941. +      else if (!offset_rtx)
  5942. +    {
  5943. +      offset_rtx = gen_rtx (CONST_INT, 0, 0);
  5944. +    }
  5945. +      RTX_IS_SPILL_P (XEXP (mem_rtx, 0)) = is_spill_rtx;
  5946. +      XEXP (mem_rtx, 0) = offset_rtx;
  5947. +      return;
  5948.      }
  5949. -
  5950. -  strcpy (buf, base_op);
  5951. -
  5952. -  switch (GET_CODE (operands[3]))
  5953. +  if (base_rtx && GET_CODE (base_rtx) == PLUS &&
  5954. +      GET_CODE (XEXP (base_rtx, 0)) == REG &&
  5955. +      GET_CODE (XEXP (base_rtx, 1)) == CONST_INT)
  5956.      {
  5957. -    case MULT:
  5958. -    case PLUS:
  5959. -      if (REG_P (operands[2]) && REGNO (operands[0]) == REGNO (operands[2]))
  5960. +      offset_adjust += INTVAL (XEXP (base_rtx, 1));
  5961. +      base_rtx = copy_all_rtx (XEXP (base_rtx, 0));
  5962. +    }
  5963. +  else if (base_rtx && GET_CODE (base_rtx) == CONST_INT)
  5964. +    {
  5965. +      offset_adjust += INTVAL (base_rtx);
  5966. +      base_rtx = NULL;
  5967. +    }
  5968. +  if (index_rtx && GET_CODE (index_rtx) == PLUS &&
  5969. +      GET_CODE (XEXP (index_rtx, 0)) == REG &&
  5970. +      GET_CODE (XEXP (index_rtx, 1)) == CONST_INT)
  5971. +    {
  5972. +      offset_adjust += INTVAL (XEXP (index_rtx, 1)) * scale;
  5973. +      index_rtx = copy_all_rtx (XEXP (index_rtx, 0));
  5974. +    }
  5975. +  if (index_rtx)
  5976. +    {
  5977. +      if (!LEGITIMATE_INDEX_P (index_rtx)
  5978. +      && !(index_rtx == stack_pointer_rtx && scale == 1 && base_rtx == NULL))
  5979.      {
  5980. -      temp = operands[2];
  5981. -      operands[2] = operands[1];
  5982. -      operands[1] = temp;
  5983. +      obfree (storage);
  5984. +      return;
  5985.      }
  5986. -
  5987. -      if (GET_CODE (operands[2]) == MEM)
  5988. -    return strcat (buf, AS1 (%z2,%2));
  5989. -
  5990. -      if (NON_STACK_REG_P (operands[1]))
  5991. +    }
  5992. +  if (base_rtx)
  5993. +    {
  5994. +      if (!LEGITIMATE_INDEX_P (base_rtx) && GET_CODE (base_rtx) != REG)
  5995.      {
  5996. -      output_op_from_reg (operands[1], strcat (buf, AS1 (%z0,%1)));
  5997. -      RET;
  5998. +      obfree (storage);
  5999. +      return;
  6000.      }
  6001. -      else if (NON_STACK_REG_P (operands[2]))
  6002. +    }
  6003. +  if (offset_adjust != 0)
  6004. +    {
  6005. +      if (offset_rtx)
  6006.      {
  6007. -      output_op_from_reg (operands[2], strcat (buf, AS1 (%z0,%1)));
  6008. -      RET;
  6009. +      if (GET_CODE (offset_rtx) == CONST &&
  6010. +          GET_CODE (XEXP (offset_rtx, 0)) == PLUS)
  6011. +        {
  6012. +          if (GET_CODE (XEXP (XEXP (offset_rtx, 0), 0)) == SYMBOL_REF &&
  6013. +          GET_CODE (XEXP (XEXP (offset_rtx, 0), 1)) == CONST_INT)
  6014. +        {
  6015. +          offset_rtx = copy_all_rtx (offset_rtx);
  6016. +          XEXP (XEXP (offset_rtx, 0), 1) =
  6017. +            gen_rtx (CONST_INT, 0, INTVAL (XEXP (XEXP (offset_rtx, 0), 1)) + offset_adjust);
  6018. +          if (!CONSTANT_P (offset_rtx))
  6019. +            {
  6020. +              obfree (storage);
  6021. +              return;
  6022. +            }
  6023. +        }
  6024. +        }
  6025. +      else if (GET_CODE (offset_rtx) == SYMBOL_REF)
  6026. +        {
  6027. +          offset_rtx =
  6028. +        gen_rtx (CONST, GET_MODE (offset_rtx),
  6029. +             gen_rtx (PLUS, GET_MODE (offset_rtx),
  6030. +                  offset_rtx,
  6031. +                  gen_rtx (CONST_INT, 0, offset_adjust)));
  6032. +          if (!CONSTANT_P (offset_rtx))
  6033. +        {
  6034. +          obfree (storage);
  6035. +          return;
  6036. +        }
  6037. +        }
  6038. +      else if (GET_CODE (offset_rtx) == CONST_INT)
  6039. +        {
  6040. +          offset_rtx = gen_rtx (CONST_INT, 0, INTVAL (offset_rtx) + offset_adjust);
  6041. +        }
  6042. +      else
  6043. +        {
  6044. +          obfree (storage);
  6045. +          return;
  6046. +        }
  6047.      }
  6048. -
  6049. -      if (find_regno_note (insn, REG_DEAD, REGNO (operands[2])))
  6050. -    return strcat (buf, AS2 (p,%2,%0));
  6051. -
  6052. -      if (STACK_TOP_P (operands[0]))
  6053. -    return strcat (buf, AS2C (%y2,%0));
  6054.        else
  6055. -    return strcat (buf, AS2C (%2,%0));
  6056. -
  6057. -    case MINUS:
  6058. -    case DIV:
  6059. -      if (GET_CODE (operands[1]) == MEM)
  6060. -    return strcat (buf, AS1 (r%z1,%1));
  6061. -
  6062. -      if (GET_CODE (operands[2]) == MEM)
  6063. -    return strcat (buf, AS1 (%z2,%2));
  6064. -
  6065. -      if (NON_STACK_REG_P (operands[1]))
  6066.      {
  6067. -      output_op_from_reg (operands[1], strcat (buf, AS1 (r%z0,%1)));
  6068. -      RET;
  6069. +      offset_rtx = gen_rtx (CONST_INT, 0, offset_adjust);
  6070.      }
  6071. -      else if (NON_STACK_REG_P (operands[2]))
  6072. +      if (index_rtx)
  6073.      {
  6074. -      output_op_from_reg (operands[2], strcat (buf, AS1 (%z0,%1)));
  6075. -      RET;
  6076. +      if (base_rtx)
  6077. +        {
  6078. +          if (scale != 1)
  6079. +        {
  6080. +          if (GET_CODE (offset_rtx) == CONST_INT &&
  6081. +              INTVAL (offset_rtx) == 0)
  6082. +            {
  6083. +              ret_rtx = gen_rtx (PLUS, GET_MODE (base_rtx),
  6084. +                 gen_rtx (MULT, GET_MODE (index_rtx), index_rtx,
  6085. +                      scale_rtx),
  6086. +                     base_rtx);
  6087. +            }
  6088. +          else
  6089. +            {
  6090. +              ret_rtx = gen_rtx (PLUS, GET_MODE (offset_rtx),
  6091. +                     gen_rtx (PLUS, GET_MODE (base_rtx),
  6092. +                 gen_rtx (MULT, GET_MODE (index_rtx), index_rtx,
  6093. +                      scale_rtx),
  6094. +                          base_rtx),
  6095. +                     offset_rtx);
  6096. +            }
  6097. +        }
  6098. +          else
  6099. +        {
  6100. +          if (GET_CODE (offset_rtx) == CONST_INT &&
  6101. +              INTVAL (offset_rtx) == 0)
  6102. +            {
  6103. +              ret_rtx = gen_rtx (PLUS, GET_MODE (index_rtx), index_rtx, base_rtx);
  6104. +            }
  6105. +          else
  6106. +            {
  6107. +              ret_rtx = gen_rtx (PLUS, GET_MODE (offset_rtx),
  6108. +                 gen_rtx (PLUS, GET_MODE (index_rtx), index_rtx,
  6109. +                      base_rtx),
  6110. +                     offset_rtx);
  6111. +            }
  6112. +        }
  6113. +        }
  6114. +      else
  6115. +        {
  6116. +          if (scale != 1)
  6117. +        {
  6118. +          if (GET_CODE (offset_rtx) == CONST_INT &&
  6119. +              INTVAL (offset_rtx) == 0)
  6120. +            {
  6121. +              ret_rtx = gen_rtx (MULT, GET_MODE (index_rtx), index_rtx, scale_rtx);
  6122. +            }
  6123. +          else
  6124. +            {
  6125. +              ret_rtx =
  6126. +            gen_rtx (PLUS, GET_MODE (offset_rtx),
  6127. +                 gen_rtx (MULT, GET_MODE (index_rtx), index_rtx,
  6128. +                      scale_rtx),
  6129. +                 offset_rtx);
  6130. +            }
  6131. +        }
  6132. +          else
  6133. +        {
  6134. +          if (GET_CODE (offset_rtx) == CONST_INT &&
  6135. +              INTVAL (offset_rtx) == 0)
  6136. +            {
  6137. +              ret_rtx = index_rtx;
  6138. +            }
  6139. +          else
  6140. +            {
  6141. +              ret_rtx = gen_rtx (PLUS, GET_MODE (index_rtx), index_rtx, offset_rtx);
  6142. +            }
  6143. +        }
  6144. +        }
  6145.      }
  6146. -
  6147. -      if (! STACK_REG_P (operands[1]) || ! STACK_REG_P (operands[2]))
  6148. -    abort ();
  6149. -
  6150. -      if (find_regno_note (insn, REG_DEAD, REGNO (operands[2])))
  6151. -    return strcat (buf, AS2 (rp,%2,%0));
  6152. -
  6153. -      if (find_regno_note (insn, REG_DEAD, REGNO (operands[1])))
  6154. -    return strcat (buf, AS2 (p,%1,%0));
  6155. -
  6156. -      if (STACK_TOP_P (operands[0]))
  6157. +      else
  6158.      {
  6159. -      if (STACK_TOP_P (operands[1]))
  6160. -        return strcat (buf, AS2C (%y2,%0));
  6161. +      if (base_rtx)
  6162. +        {
  6163. +          if (GET_CODE (offset_rtx) == CONST_INT &&
  6164. +          INTVAL (offset_rtx) == 0)
  6165. +        {
  6166. +          ret_rtx = base_rtx;
  6167. +        }
  6168. +          else
  6169. +        {
  6170. +          ret_rtx = gen_rtx (PLUS, GET_MODE (base_rtx), base_rtx, offset_rtx);
  6171. +        }
  6172. +        }
  6173. +      else if (was_only_offset)
  6174. +        {
  6175. +          ret_rtx = offset_rtx;
  6176. +        }
  6177.        else
  6178. -        return strcat (buf, AS2 (r,%y1,%0));
  6179. +        {
  6180. +          obfree (storage);
  6181. +          return;
  6182. +        }
  6183.      }
  6184. -      else if (STACK_TOP_P (operands[1]))
  6185. -    return strcat (buf, AS2C (%1,%0));
  6186. -      else
  6187. -    return strcat (buf, AS2 (r,%2,%0));
  6188. -
  6189. -    default:
  6190. -      abort ();
  6191. +      XEXP (mem_rtx, 0) = ret_rtx;
  6192. +      RTX_IS_SPILL_P (XEXP (mem_rtx, 0)) = is_spill_rtx;
  6193. +      return;
  6194.      }
  6195. -}
  6196. -
  6197. -/* Output code for INSN to convert a float to a signed int.  OPERANDS
  6198. -   are the insn operands.  The output may be SFmode or DFmode and the
  6199. -   input operand may be SImode or DImode.  As a special case, make sure
  6200. -   that the 387 stack top dies if the output mode is DImode, because the
  6201. -   hardware requires this.  */
  6202. -
  6203. -char *
  6204. -output_fix_trunc (insn, operands)
  6205. -     rtx insn;
  6206. -     rtx *operands;
  6207. -{
  6208. -  int stack_top_dies = find_regno_note (insn, REG_DEAD, FIRST_STACK_REG) != 0;
  6209. -  rtx xops[2];
  6210. -
  6211. -  if (! STACK_TOP_P (operands[1]) ||
  6212. -      (GET_MODE (operands[0]) == DImode && ! stack_top_dies))
  6213. -    abort ();
  6214. -
  6215. -  xops[0] = GEN_INT (12);
  6216. -  xops[1] = operands[4];
  6217. -
  6218. -  output_asm_insn (AS1 (fnstc%W2,%2), operands);
  6219. -  output_asm_insn (AS2 (mov%L2,%2,%4), operands);
  6220. -  output_asm_insn (AS2 (mov%B1,%0,%h1), xops);
  6221. -  output_asm_insn (AS2 (mov%L4,%4,%3), operands);
  6222. -  output_asm_insn (AS1 (fldc%W3,%3), operands);
  6223. -
  6224. -  if (NON_STACK_REG_P (operands[0]))
  6225. -    output_to_reg (operands[0], stack_top_dies);
  6226. -  else if (GET_CODE (operands[0]) == MEM)
  6227. +  else
  6228.      {
  6229. -      if (stack_top_dies)
  6230. -    output_asm_insn (AS1 (fistp%z0,%0), operands);
  6231. -      else
  6232. -    output_asm_insn (AS1 (fist%z0,%0), operands);
  6233. +      obfree (storage);
  6234. +      return;
  6235.      }
  6236. -  else
  6237. -    abort ();
  6238. -
  6239. -  return AS1 (fldc%W2,%2);
  6240.  }
  6241. -
  6242. -/* Output code for INSN to compare OPERANDS.  The two operands might
  6243. -   not have the same mode: one might be within a FLOAT or FLOAT_EXTEND
  6244. -   expression.  If the compare is in mode CCFPEQmode, use an opcode that
  6245. -   will not fault if a qNaN is present. */
  6246.  
  6247. -char *
  6248. -output_float_compare (insn, operands)
  6249. -     rtx insn;
  6250. -     rtx *operands;
  6251. +/* return 1 if the first insn to set cc before insn also sets the register
  6252. +   reg_rtx - otherwise return 0
  6253. +*/
  6254. +int
  6255. +last_to_set_cc (reg_rtx, insn)
  6256. +     rtx reg_rtx, insn;
  6257.  {
  6258. -  int stack_top_dies;
  6259. -  rtx body = XVECEXP (PATTERN (insn), 0, 0);
  6260. -  int unordered_compare = GET_MODE (SET_SRC (body)) == CCFPEQmode;
  6261. -
  6262. -  if (! STACK_TOP_P (operands[0]))
  6263. -    abort ();
  6264. +  rtx prev_insn = PREV_INSN (insn);
  6265.  
  6266. -  stack_top_dies = find_regno_note (insn, REG_DEAD, FIRST_STACK_REG) != 0;
  6267. -
  6268. -  if (STACK_REG_P (operands[1])
  6269. -      && stack_top_dies
  6270. -      && find_regno_note (insn, REG_DEAD, REGNO (operands[1]))
  6271. -      && REGNO (operands[1]) != FIRST_STACK_REG)
  6272. +  while (prev_insn)
  6273.      {
  6274. -      /* If both the top of the 387 stack dies, and the other operand
  6275. -     is also a stack register that dies, then this must be a
  6276. -     `fcompp' float compare */
  6277. -
  6278. -      if (unordered_compare)
  6279. -    output_asm_insn ("fucompp", operands);
  6280. +      if (GET_CODE (prev_insn) == NOTE)
  6281. +    {
  6282. +      ;
  6283. +    }
  6284. +      else if (GET_CODE (prev_insn) == INSN)
  6285. +    {
  6286. +      if (GET_CODE (PATTERN (prev_insn)) != SET)
  6287. +        {
  6288. +          return (0);
  6289. +        }
  6290. +      if (rtx_equal_p (SET_DEST (PATTERN (prev_insn)), reg_rtx))
  6291. +        {
  6292. +          if (sets_condition_code (SET_SRC (PATTERN (prev_insn))))
  6293. +        {
  6294. +          return (1);
  6295. +        }
  6296. +          else
  6297. +        {
  6298. +          return (0);
  6299. +        }
  6300. +        }
  6301. +      else if (!doesnt_set_condition_code (SET_SRC (PATTERN (prev_insn))))
  6302. +        {
  6303. +          return (0);
  6304. +        }
  6305. +    }
  6306.        else
  6307. -    output_asm_insn ("fcompp", operands);
  6308. +    {
  6309. +      return (0);
  6310. +    }
  6311. +      prev_insn = PREV_INSN (prev_insn);
  6312.      }
  6313. -  else
  6314. -    {
  6315. -      static char buf[100];
  6316. -
  6317. -      /* Decide if this is the integer or float compare opcode, or the
  6318. -     unordered float compare. */
  6319. -
  6320. -      if (unordered_compare)
  6321. -    strcpy (buf, "fucom");
  6322. -      else if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_FLOAT)
  6323. -    strcpy (buf, "fcom");
  6324. -      else
  6325. -    strcpy (buf, "ficom");
  6326. -
  6327. -      /* Modify the opcode if the 387 stack is to be popped. */
  6328. -
  6329. -      if (stack_top_dies)
  6330. -    strcat (buf, "p");
  6331. +  return (0);
  6332. +}
  6333.  
  6334. -      if (NON_STACK_REG_P (operands[1]))
  6335. -    output_op_from_reg (operands[1], strcat (buf, AS1 (%z0,%1)));
  6336. -      else
  6337. -        output_asm_insn (strcat (buf, AS1 (%z1,%y1)), operands);
  6338. -    }
  6339. +int
  6340. +doesnt_set_condition_code (pat)
  6341. +     rtx pat;
  6342. +{
  6343. +  switch (GET_CODE (pat))
  6344. +    {
  6345. +    case MEM:
  6346. +    case REG:
  6347. +      return (1);
  6348.  
  6349. -  /* Now retrieve the condition code. */
  6350. +    default:
  6351. +      return (0);
  6352.  
  6353. -  return output_fp_cc0_set (insn);
  6354. +    }
  6355.  }
  6356. -
  6357. -/* Output opcodes to transfer the results of FP compare or test INSN
  6358. -   from the FPU to the CPU flags.  If TARGET_IEEE_FP, ensure that if the
  6359. -   result of the compare or test is unordered, no comparison operator
  6360. -   succeeds except NE.  Return an output template, if any.  */
  6361.  
  6362. -char *
  6363. -output_fp_cc0_set (insn)
  6364. -     rtx insn;
  6365. +int
  6366. +sets_condition_code (pat)
  6367. +     rtx pat;
  6368.  {
  6369. -  rtx xops[3];
  6370. -  rtx unordered_label;
  6371. -  rtx next;
  6372. -  enum rtx_code code;
  6373. +  switch (GET_CODE (pat))
  6374. +    {
  6375. +    case PLUS:
  6376. +    case MINUS:
  6377. +    case AND:
  6378. +    case IOR:
  6379. +    case XOR:
  6380. +    case NOT:
  6381. +    case NEG:
  6382. +    case MULT:
  6383. +    case DIV:
  6384. +    case MOD:
  6385. +    case UDIV:
  6386. +    case UMOD:
  6387. +      return (1);
  6388.  
  6389. -  xops[0] = gen_rtx (REG, HImode, 0);
  6390. -  output_asm_insn (AS1 (fnsts%W0,%0), xops);
  6391. +    default:
  6392. +      return (0);
  6393.  
  6394. -  if (! TARGET_IEEE_FP)
  6395. -    return "sahf";
  6396. +    }
  6397. +}
  6398.  
  6399. -  next = next_cc0_user (insn);
  6400. -  if (next == NULL_RTX)
  6401. -    abort ();
  6402.  
  6403. -  if (GET_CODE (next) == JUMP_INSN
  6404. -      && GET_CODE (PATTERN (next)) == SET
  6405. -      && SET_DEST (PATTERN (next)) == pc_rtx
  6406. -      && GET_CODE (SET_SRC (PATTERN (next))) == IF_THEN_ELSE)
  6407. -    {
  6408. -      code = GET_CODE (XEXP (SET_SRC (PATTERN (next)), 0));
  6409. -    }
  6410. -  else if (GET_CODE (PATTERN (next)) == SET)
  6411. +/* intel1 */
  6412. +int
  6413. +str_immediate_operand (op, mode)
  6414. +     register rtx op;
  6415. +     enum machine_mode mode;
  6416. +{
  6417. +  if (GET_CODE (op) == CONST_INT && INTVAL (op) <= 32 && INTVAL (op) >= 0)
  6418.      {
  6419. -      code = GET_CODE (SET_SRC (PATTERN (next)));
  6420. +      return (1);
  6421.      }
  6422. -  else
  6423. -    abort ();
  6424. +  return (0);
  6425. +}
  6426.  
  6427. -  xops[0] = gen_rtx (REG, QImode, 0);
  6428. +/* intel1 */
  6429. +void
  6430. +override_options ()
  6431. +{
  6432. +  register int i, start;
  6433. +  register int regno;
  6434. +  register enum machine_mode mode;
  6435. +#if 0
  6436. +  int blend = 0;
  6437. +#endif
  6438.  
  6439. -  switch (code)
  6440. +  /* only one `-mcpu' allowed */
  6441. +  if (TARGET_X && (TARGET_X != TARGET_386) && (TARGET_X != TARGET_486) && (TARGET_X != TARGET_PENTIUM))
  6442. +    fatal ("multilple `-mcpu' definitions .\n");
  6443. +
  6444. + /* if `-mcpu' use it, otherwise take default */
  6445. + target_flags |= USE_CPU;
  6446. +
  6447. +  if (TARGET_PENTIUM)
  6448. +    x86_cpu = PROCESSOR_PENTIUM;
  6449. +  else if (TARGET_486)
  6450. +    x86_cpu = PROCESSOR_486;
  6451. +  else if (TARGET_386)
  6452. +    x86_cpu = PROCESSOR_386;
  6453. +  else /* no processor type ? */
  6454. +    fatal ("no processor type.\n");
  6455. +  
  6456. +#if 0 /* what happens if we have few -mcpu's, I don't think it's needed */
  6457. +  /* Identify the processor type */
  6458. +  if (!(TARGET_PENTIUM) && !(TARGET_486) && !(TARGET_386))
  6459. +    {
  6460. +      x86_cpu = PROCESSOR_PENTIUM;
  6461. +      target_flags |= (TARGET_486_SWITCH);
  6462. +      blend = 1;
  6463. +    }
  6464. +
  6465. +  else
  6466.      {
  6467. -    case GT:
  6468. -      xops[1] = GEN_INT (0x45);
  6469. -      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  6470. -      /* je label */
  6471. -      break;
  6472. +      x86_cpu = PROCESSOR_DEFAULT;
  6473. +      if (TARGET_PENTIUM)
  6474. +    {
  6475. +      x86_cpu = PROCESSOR_PENTIUM;
  6476. +    }
  6477. +      if (TARGET_486)
  6478. +    {
  6479. +      if (x86_cpu != PROCESSOR_DEFAULT)
  6480. +        {
  6481. +          error ("conflicting -mX86 : using blend");
  6482. +          blend = 1;
  6483. +          x86_cpu = PROCESSOR_PENTIUM;
  6484. +          target_flags &= ~(TARGET_386_SWITCH);
  6485. +          target_flags &= ~(TARGET_PENTIUM_SWITCH);
  6486. +        }
  6487. +      else
  6488. +        {
  6489. +          x86_cpu = PROCESSOR_486;
  6490. +        }
  6491. +    }
  6492. +      if (TARGET_386)
  6493. +    {
  6494. +      if (x86_cpu != PROCESSOR_DEFAULT)
  6495. +        {
  6496. +          error ("conflicting -mX86 : using blend");
  6497. +          blend = 1;
  6498. +          x86_cpu = PROCESSOR_486;
  6499. +          target_flags &= ~(TARGET_386_SWITCH);
  6500. +          target_flags &= ~(TARGET_PENTIUM_SWITCH);
  6501. +          target_flags |= (TARGET_486_SWITCH);
  6502. +        }
  6503. +      else
  6504. +        {
  6505. +          x86_cpu = PROCESSOR_386;
  6506. +        }
  6507. +    }
  6508.  
  6509. -    case LT:
  6510. -      xops[1] = GEN_INT (0x45);
  6511. -      xops[2] = GEN_INT (0x01);
  6512. -      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  6513. -      output_asm_insn (AS2 (cmp%B0,%2,%h0), xops);
  6514. -      /* je label */
  6515. -      break;
  6516.  
  6517. -    case GE:
  6518. -      xops[1] = GEN_INT (0x05);
  6519. -      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  6520. -      /* je label */
  6521. -      break;
  6522. +    }
  6523. +#endif
  6524. +  if (opt_level >= 4)
  6525. +    {
  6526. +      if (TARGET_486)
  6527. +        {
  6528. +      if (opt_level == 4
  6529. +          && !flag_no_interleave_stack_non_stack)
  6530. +        {
  6531. +          flag_interleave_stack_non_stack = 1;
  6532. +          flag_schedule_insns = 1;
  6533. +        }
  6534. +        }
  6535. +#if 0
  6536. +      if(TARGET_BLEND)
  6537. +        {
  6538. +          if (!flag_no_risc)
  6539. +            flag_risc = 1;
  6540. +          if (!flag_no_risc_const)
  6541. +            flag_risc_const = 1;
  6542. +          if (!flag_no_recombine)
  6543. +            flag_recombine = 1;
  6544. +        }
  6545. +#endif
  6546. +      if (TARGET_PENTIUM)
  6547. +        {
  6548. +          if (!flag_no_risc)
  6549. +            flag_risc = 1;
  6550. +          if (!flag_no_risc_const)
  6551. +            flag_risc_const = 1;
  6552. +          /*if (!flag_no_recombine)
  6553. +            flag_recombine = 1;*/
  6554. +      if (opt_level == 4
  6555. +          && !flag_no_schedule_stack_reg_insns)
  6556. +        {
  6557. +          flag_schedule_stack_reg_insns = 1;
  6558. +          flag_schedule_insns = 1;
  6559. +        }
  6560. +      if (opt_level == 4
  6561. +          && !flag_no_interleave_stack_non_stack)
  6562. +        {
  6563. +          flag_interleave_stack_non_stack = 1;
  6564. +          flag_schedule_insns = 1;
  6565. +        }
  6566. +        }
  6567. +    }
  6568. +}
  6569.  
  6570. -    case LE:
  6571. -      xops[1] = GEN_INT (0x45);
  6572. -      xops[2] = GEN_INT (0x40);
  6573. -      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  6574. -      output_asm_insn (AS1 (dec%B0,%h0), xops);
  6575. -      output_asm_insn (AS2 (cmp%B0,%2,%h0), xops);
  6576. -      /* jb label */
  6577. -      break;
  6578.  
  6579. -    case EQ:
  6580. -      xops[1] = GEN_INT (0x45);
  6581. -      xops[2] = GEN_INT (0x40);
  6582. -      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  6583. -      output_asm_insn (AS2 (cmp%B0,%2,%h0), xops);
  6584. -      /* je label */
  6585. -      break;
  6586.  
  6587. -    case NE:
  6588. -      xops[1] = GEN_INT (0x44);
  6589. -      xops[2] = GEN_INT (0x40);
  6590. -      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  6591. -      output_asm_insn (AS2 (xor%B0,%2,%h0), xops);
  6592. -      /* jne label */
  6593. -      break;
  6594.  
  6595. -    case GTU:
  6596. -    case LTU:
  6597. -    case GEU:
  6598. -    case LEU:
  6599. -    default:
  6600. -      abort ();
  6601. +optimization_options (level)
  6602. +     int level;
  6603. +{
  6604. +  opt_level = level;
  6605. +  if (level > 0)
  6606. +    {
  6607. +      flag_opt_reg_use = 1;
  6608. +      flag_reduce_index_givs = 1;
  6609.      }
  6610. -  RET;
  6611. +  if (level >= 2)
  6612. +    {
  6613. +#ifdef INSN_SCHEDULING
  6614. +      flag_schedule_insns = 0;
  6615. +      flag_schedule_insns_after_reload = 0;
  6616. +#endif
  6617. +    }
  6618. +  if (level >= 3)
  6619. +    {
  6620. +      flag_inline_functions = 1;
  6621. +      flag_jump_back = 1;
  6622. +      flag_copy_prop = 1;
  6623. +      flag_compare_elim = 1;
  6624. +      flag_sftwr_pipe = 1;
  6625. +      flag_omit_frame_pointer = 1;
  6626. +      flag_reg_reg_copy_opt = 1;
  6627. +      flag_opt_reg_stack = 1;
  6628. +      flag_loop_after_global = 1;
  6629. +      flag_peep_spills = 1;
  6630. +      flag_replace_stack_mem = 1;
  6631. +      flag_opt_jumps_out = 1;
  6632. +      flag_replace_mem = 1;
  6633. +      flag_correct_cse_mistakes = 1;
  6634. +      flag_push_load_into_loop = 1;
  6635. +      flag_replace_reload_regs = 1;
  6636. +      flag_sign_extension_elim = 1;
  6637. +      flag_lift_stores = 1;
  6638. +      flag_runtime_lift_stores = 1;
  6639. +    }
  6640. +  if (level >= 4)
  6641. +    {
  6642. +#ifdef INSN_SCHEDULING
  6643. +      flag_schedule_insns_after_reload = 1;
  6644. +      flag_swap_for_agi = 1;
  6645. +      if (TARGET_PENTIUM)
  6646. +    {
  6647. +      flag_risc = 1;
  6648. +      flag_risc_const = 1;
  6649. +      /*flag_recombine = 1;*/
  6650. +      if (level == 4)
  6651. +        {
  6652. +          flag_schedule_stack_reg_insns = 1;
  6653. +          flag_schedule_insns = 1;
  6654. +        }
  6655. +    }
  6656. +#endif
  6657. +    }
  6658. +  if (level >= 5)
  6659. +    {
  6660. +#ifdef INSN_SCHEDULING
  6661. +      flag_schedule_insns = 1;
  6662. +#endif
  6663. +    }
  6664. +  if (flag_no_risc)
  6665. +    flag_risc = 0;
  6666. +  if (flag_no_risc_const)
  6667. +    flag_risc_const = 0;
  6668. +  if (flag_no_recombine)
  6669. +    flag_recombine = 0;
  6670. +  if (flag_no_risc_mem_dest)
  6671. +    flag_risc_mem_dest = 0;
  6672.  }
  6673. -
  6674. -#define MAX_386_STACK_LOCALS 2
  6675.  
  6676. -static rtx i386_stack_locals[(int) MAX_MACHINE_MODE][MAX_386_STACK_LOCALS];
  6677. +/* intel1 */
  6678.  
  6679. -/* Define the structure for the machine field in struct function.  */
  6680. -struct machine_function
  6681. +int
  6682. +is_fp_insn (insn)
  6683. +     rtx insn;
  6684.  {
  6685. -  rtx i386_stack_locals[(int) MAX_MACHINE_MODE][MAX_386_STACK_LOCALS];
  6686. -};
  6687. +  if (GET_CODE (insn) == INSN && GET_CODE (PATTERN (insn)) == SET
  6688. +      && (GET_MODE (SET_DEST (PATTERN (insn))) == DFmode
  6689. +      || GET_MODE (SET_DEST (PATTERN (insn))) == SFmode))
  6690. +    {
  6691. +      return (1);
  6692. +    }
  6693. +  return (0);
  6694. +}
  6695.  
  6696. -/* Functions to save and restore i386_stack_locals.
  6697. -   These will be called, via pointer variables,
  6698. -   from push_function_context and pop_function_context.  */
  6699.  
  6700. -void
  6701. -save_386_machine_status (p)
  6702. -     struct function *p;
  6703. +/*
  6704. +  Return 1 if the mode of the SET_DEST of insn is floating point
  6705. +  and it is not an fld or a move from memory to memory.
  6706. +  Otherwise return 0
  6707. +*/
  6708. +int
  6709. +is_fp_dest (insn)
  6710. +     rtx insn;
  6711.  {
  6712. -  p->machine = (struct machine_function *) xmalloc (sizeof i386_stack_locals);
  6713. -  bcopy ((char *) i386_stack_locals, (char *) p->machine->i386_stack_locals,
  6714. -     sizeof i386_stack_locals);
  6715. +  if (GET_CODE (insn) == INSN && GET_CODE (PATTERN (insn)) == SET
  6716. +      && (GET_MODE (SET_DEST (PATTERN (insn))) == DFmode
  6717. +      || GET_MODE (SET_DEST (PATTERN (insn))) == SFmode)
  6718. +      && GET_CODE (SET_DEST (PATTERN (insn))) == REG
  6719. +      && REGNO (SET_DEST (PATTERN (insn))) >= FIRST_FLOAT_REG
  6720. +      && GET_CODE (SET_SRC (insn)) != MEM
  6721. +     )
  6722. +    {
  6723. +      return (1);
  6724. +    }
  6725. +  return (0);
  6726.  }
  6727.  
  6728. -void
  6729. -restore_386_machine_status (p)
  6730. -     struct function *p;
  6731. +/*
  6732. +  Return 1 if the mode of the SET_DEST floating point and is memory
  6733. +  and the source is a register.  
  6734. +*/
  6735. +int
  6736. +is_fp_store (insn)
  6737. +     rtx insn;
  6738.  {
  6739. -  bcopy ((char *) p->machine->i386_stack_locals, (char *) i386_stack_locals,
  6740. -     sizeof i386_stack_locals);
  6741. -  free (p->machine);
  6742. +  if (GET_CODE (insn) == INSN && GET_CODE (PATTERN (insn)) == SET
  6743. +      && (GET_MODE (SET_DEST (PATTERN (insn))) == DFmode
  6744. +      || GET_MODE (SET_DEST (PATTERN (insn))) == SFmode)
  6745. +      && GET_CODE (SET_DEST (PATTERN (insn))) == MEM
  6746. +      && GET_CODE (SET_SRC (PATTERN (insn))) == REG
  6747. +     )
  6748. +    {
  6749. +      return (1);
  6750. +    }
  6751. +  return (0);
  6752.  }
  6753.  
  6754. -/* Clear stack slot assignments remembered from previous functions.
  6755. -   This is called from INIT_EXPANDERS once before RTL is emitted for each
  6756. -   function.  */
  6757.  
  6758. -void
  6759. -clear_386_stack_locals ()
  6760. +/*
  6761. +  Return 1 if dep_insn sets a register which insn uses as a base
  6762. +  or index to reference memory.
  6763. +  otherwise return 0
  6764. +*/
  6765. +int
  6766. +agi_dependent (insn, dep_insn)
  6767. +     rtx insn, dep_insn;
  6768.  {
  6769. -  enum machine_mode mode;
  6770. -  int n;
  6771. +  if (GET_CODE (dep_insn) == INSN && GET_CODE (PATTERN (dep_insn)) == SET
  6772. +      && GET_CODE (SET_DEST (PATTERN (dep_insn))) == REG)
  6773. +    {
  6774. +      return (reg_mentioned_in_mem (SET_DEST (PATTERN (dep_insn)), insn));
  6775. +    }
  6776. +  if (GET_CODE (dep_insn) == INSN && GET_CODE (PATTERN (dep_insn)) == SET
  6777. +      && GET_CODE (SET_DEST (PATTERN (dep_insn))) == MEM
  6778. +      && push_operand (SET_DEST (PATTERN (dep_insn)),
  6779. +                       GET_MODE (SET_DEST (PATTERN (dep_insn))))
  6780. +     )
  6781. +    {
  6782. +      return (reg_mentioned_in_mem (stack_pointer_rtx, insn));
  6783. +    }
  6784. +  
  6785. +  return (0);
  6786. +}
  6787.  
  6788. -  for (mode = VOIDmode; (int) mode < (int) MAX_MACHINE_MODE;
  6789. -       mode = (enum machine_mode) ((int) mode + 1))
  6790. -    for (n = 0; n < MAX_386_STACK_LOCALS; n++)
  6791. -      i386_stack_locals[(int) mode][n] = NULL_RTX;
  6792. +/*
  6793. +  Return 1 if reg is used in rtl as a base or index for a memory ref
  6794. +  otherwise return 0.
  6795. +*/
  6796. +int
  6797. +reg_mentioned_in_mem (reg, rtl)
  6798. +     rtx reg, rtl;
  6799. +{
  6800. +  register char *fmt;
  6801. +  register int i;
  6802. +  register enum rtx_code code;
  6803.  
  6804. -  /* Arrange to save and restore i386_stack_locals around nested functions.  */
  6805. -  save_machine_status = save_386_machine_status;
  6806. -  restore_machine_status = restore_386_machine_status;
  6807. -}
  6808. +  if (rtl == NULL)
  6809. +    return (0);
  6810.  
  6811. -/* Return a MEM corresponding to a stack slot with mode MODE.
  6812. -   Allocate a new slot if necessary.
  6813. +  code = GET_CODE (rtl);
  6814.  
  6815. -   The RTL for a function can have several slots available: N is
  6816. -   which slot to use.  */
  6817. +  switch (code)
  6818. +    {
  6819. +    case HIGH:
  6820. +    case CONST_INT:
  6821. +    case CONST:
  6822. +    case CONST_DOUBLE:
  6823. +    case SYMBOL_REF:
  6824. +    case LABEL_REF:
  6825. +    case PC:
  6826. +    case CC0:
  6827. +    case SUBREG:
  6828. +      return (0);
  6829.  
  6830. -rtx
  6831. -assign_386_stack_local (mode, n)
  6832. -     enum machine_mode mode;
  6833. -     int n;
  6834. -{
  6835. -  if (n < 0 || n >= MAX_386_STACK_LOCALS)
  6836. -    abort ();
  6837.  
  6838. -  if (i386_stack_locals[(int) mode][n] == NULL_RTX)
  6839. -    i386_stack_locals[(int) mode][n]
  6840. -      = assign_stack_local (mode, GET_MODE_SIZE (mode), 0);
  6841. +    }
  6842.  
  6843. -  return i386_stack_locals[(int) mode][n];
  6844. +  if (code == MEM && reg_mentioned_p (reg, rtl))
  6845. +    {
  6846. +      return (1);
  6847. +    }
  6848. +
  6849. +  fmt = GET_RTX_FORMAT (code);
  6850. +
  6851. +  for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
  6852. +    {
  6853. +      if (fmt[i] == 'E')
  6854. +    {
  6855. +      register int j;
  6856. +      for (j = XVECLEN (rtl, i) - 1; j >= 0; j--)
  6857. +        if (reg_mentioned_in_mem (reg, XVECEXP (rtl, i, j)))
  6858. +          return 1;
  6859. +    }
  6860. +      else if (fmt[i] == 'e'
  6861. +           && reg_mentioned_in_mem (reg, XEXP (rtl, i)))
  6862. +    return 1;
  6863. +    }
  6864. +  return (0);
  6865.  }
  6866. +
  6867. diff -r -u -H -N gcc-2.6.3/config/i386/i386.c.old gcc-i2.6.3/config/i386/i386.c.old
  6868. --- gcc-2.6.3/config/i386/i386.c.old    Wed Dec 31 19:00:00 1969
  6869. +++ gcc-i2.6.3/config/i386/i386.c.old    Thu Feb 16 12:42:13 1995
  6870. @@ -0,0 +1,3864 @@
  6871. +/* Subroutines for insn-output.c for Intel X86.
  6872. +   Copyright (C) 1988, 1992, 1994 Free Software Foundation, Inc.
  6873. +
  6874. +   Pentium cpu support and other enhancements by Tevi Devor Intel Corp.
  6875. +   (tevi@iil.intel.com).
  6876. +
  6877. +This file is part of GNU CC.
  6878. +
  6879. +GNU CC is free software; you can redistribute it and/or modify
  6880. +it under the terms of the GNU General Public License as published by
  6881. +the Free Software Foundation; either version 2, or (at your option)
  6882. +any later version.
  6883. +
  6884. +GNU CC is distributed in the hope that it will be useful,
  6885. +but WITHOUT ANY WARRANTY; without even the implied warranty of
  6886. +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  6887. +GNU General Public License for more details.
  6888. +
  6889. +You should have received a copy of the GNU General Public License
  6890. +along with GNU CC; see the file COPYING.  If not, write to
  6891. +the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  6892. +
  6893. +#include <stdio.h>
  6894. +#include <setjmp.h>
  6895. +#include "config.h"
  6896. +#include "rtl.h"
  6897. +#include "regs.h"
  6898. +
  6899. +/* HACK */
  6900. +#ifndef REG_ALLOC_ORDER
  6901. +#define REG_ALLOC_ORDER
  6902. +#endif
  6903. +
  6904. +#include "hard-reg-set.h"
  6905. +#include "real.h"
  6906. +#include "insn-config.h"
  6907. +#include "conditions.h"
  6908. +#include "insn-flags.h"
  6909. +#include "output.h"
  6910. +#include "insn-attr.h"
  6911. +#include "tree.h"
  6912. +#include "flags.h"
  6913. +#include "function.h"
  6914. +
  6915. +/* intel1 Need the EXTRA_CONSTRAINT - changed s to */
  6916. +#if 0
  6917. +#ifdef EXTRA_CONSTRAINT
  6918. +/* If EXTRA_CONSTRAINT is defined, then the 'S'
  6919. +   constraint in REG_CLASS_FROM_LETTER will no longer work, and various
  6920. +   asm statements that need 'S' for class SIREG will break.  */
  6921. + error EXTRA_CONSTRAINT conflicts with S constraint letter
  6922. +/* The previous line used to be #error, but some compilers barf
  6923. +   even if the conditional was untrue.  */
  6924. +#endif
  6925. +#endif
  6926. +
  6927. +/* which cpu are we scheduling for intel1*/
  6928. +enum processor_type x86_cpu;
  6929. +
  6930. +#define AT_BP(mode) (gen_rtx (MEM, (mode), frame_pointer_rtx))
  6931. +
  6932. +extern FILE *asm_out_file;
  6933. +extern char *strcat ();
  6934. +
  6935. +char *singlemove_string ();
  6936. +char *output_move_const_single ();
  6937. +char *output_fp_cc0_set ();
  6938. +
  6939. +/* intel1 */
  6940. +static int opt_level=0;
  6941. +
  6942. +char *hi_reg_name[] = HI_REGISTER_NAMES;
  6943. +char *qi_reg_name[] = QI_REGISTER_NAMES;
  6944. +char *qi_high_reg_name[] = QI_HIGH_REGISTER_NAMES;
  6945. +
  6946. +/* Array of the smallest class containing reg number REGNO, indexed by
  6947. +   REGNO.  Used by REGNO_REG_CLASS in i386.h. */
  6948. +
  6949. +enum reg_class regclass_map[FIRST_PSEUDO_REGISTER] =
  6950. +{
  6951. +  /* ax, dx, cx, bx */
  6952. +  AREG, DREG, CREG, BREG,
  6953. +  /* si, di, bp, sp */
  6954. +  SIREG, DIREG, INDEX_REGS, GENERAL_REGS,
  6955. +  /* FP registers */
  6956. +  FP_TOP_REG, FP_SECOND_REG, FLOAT_REGS, FLOAT_REGS,
  6957. +  FLOAT_REGS, FLOAT_REGS, FLOAT_REGS, FLOAT_REGS,       
  6958. +  /* arg pointer */
  6959. +  INDEX_REGS
  6960. +};
  6961. +
  6962. +/* Test and compare insns in i386.md store the information needed to
  6963. +   generate branch and scc insns here.  */
  6964. +
  6965. +struct rtx_def *i386_compare_op0 = NULL_RTX;
  6966. +struct rtx_def *i386_compare_op1 = NULL_RTX;
  6967. +struct rtx_def *(*i386_compare_gen)(), *(*i386_compare_gen_eq)();
  6968. +
  6969. +/* Register allocation order */
  6970. +char *i386_reg_alloc_order = (char *)0;
  6971. +static char regs_allocated[FIRST_PSEUDO_REGISTER];
  6972. +
  6973. +
  6974. +/* Sometimes certain combinations of command options do not make
  6975. +   sense on a particular target machine.  You can define a macro
  6976. +   `OVERRIDE_OPTIONS' to take account of this.  This macro, if
  6977. +   defined, is executed once just after all the command options have
  6978. +   been parsed.
  6979. +
  6980. +   Don't use this macro to turn on various extra optimizations for
  6981. +   `-O'.  That is what `OPTIMIZATION_OPTIONS' is for.  */
  6982. +
  6983. +void
  6984. +override_options ()
  6985. +{
  6986. +  int ch, i, regno;
  6987. +
  6988. +#ifdef SUBTARGET_OVERRIDE_OPTIONS
  6989. +  SUBTARGET_OVERRIDE_OPTIONS;
  6990. +#endif
  6991. +
  6992. +  /* Validate registers in register allocation order */
  6993. +  if (i386_reg_alloc_order)
  6994. +    {
  6995. +      for (i = 0; (ch = i386_reg_alloc_order[i]) != '\0'; i++)
  6996. +    {
  6997. +      switch (ch)
  6998. +        {
  6999. +        case 'a':    regno = 0;    break;
  7000. +        case 'd':    regno = 1;    break;
  7001. +        case 'c':    regno = 2;    break;
  7002. +        case 'b':    regno = 3;    break;
  7003. +        case 'S':    regno = 4;    break;
  7004. +        case 'D':    regno = 5;    break;
  7005. +        case 'B':    regno = 6;    break;
  7006. +
  7007. +        default:    fatal ("Register '%c' is unknown", ch);
  7008. +        }
  7009. +
  7010. +      if (regs_allocated[regno])
  7011. +        fatal ("Register '%c' was already specified in the allocation order", ch);
  7012. +
  7013. +      regs_allocated[regno] = 1;
  7014. +    }
  7015. +    }
  7016. +}
  7017. +
  7018. +/* A C statement (sans semicolon) to choose the order in which to
  7019. +   allocate hard registers for pseudo-registers local to a basic
  7020. +   block.
  7021. +
  7022. +   Store the desired register order in the array `reg_alloc_order'.
  7023. +   Element 0 should be the register to allocate first; element 1, the
  7024. +   next register; and so on.
  7025. +
  7026. +   The macro body should not assume anything about the contents of
  7027. +   `reg_alloc_order' before execution of the macro.
  7028. +
  7029. +   On most machines, it is not necessary to define this macro.  */
  7030. +
  7031. +void
  7032. +order_regs_for_local_alloc ()
  7033. +{
  7034. +  int i, ch, order, regno;
  7035. +
  7036. +  /* User specified the register allocation order */
  7037. +  if (i386_reg_alloc_order)
  7038. +    {
  7039. +      for (i = order = 0; (ch = i386_reg_alloc_order[i]) != '\0'; i++)
  7040. +    {
  7041. +      switch (ch)
  7042. +        {
  7043. +        case 'a':    regno = 0;    break;
  7044. +        case 'd':    regno = 1;    break;
  7045. +        case 'c':    regno = 2;    break;
  7046. +        case 'b':    regno = 3;    break;
  7047. +        case 'S':    regno = 4;    break;
  7048. +        case 'D':    regno = 5;    break;
  7049. +        case 'B':    regno = 6;    break;
  7050. +        }
  7051. +
  7052. +      reg_alloc_order[order++] = regno;
  7053. +    }
  7054. +
  7055. +      for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
  7056. +    {
  7057. +      if (!regs_allocated[i])
  7058. +        reg_alloc_order[order++] = i;
  7059. +    }
  7060. +    }
  7061. +
  7062. +  /* If users did not specify a register allocation order, favor eax
  7063. +     normally except if DImode variables are used, in which case
  7064. +     favor edx before eax, which seems to cause less spill register
  7065. +     not found messages.  */
  7066. +  else
  7067. +    {
  7068. +      rtx insn;
  7069. +
  7070. +      for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
  7071. +    reg_alloc_order[i] = i;
  7072. +
  7073. +      if (optimize)
  7074. +    {
  7075. +      int use_dca = FALSE;
  7076. +
  7077. +      for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
  7078. +        {
  7079. +          if (GET_CODE (insn) == INSN)
  7080. +        {
  7081. +          rtx set = NULL_RTX;
  7082. +          rtx pattern = PATTERN (insn);
  7083. +
  7084. +          if (GET_CODE (pattern) == SET)
  7085. +            set = pattern;
  7086. +
  7087. +          else if ((GET_CODE (pattern) == PARALLEL
  7088. +                || GET_CODE (pattern) == SEQUENCE)
  7089. +               && GET_CODE (XVECEXP (pattern, 0, 0)) == SET)
  7090. +            set = XVECEXP (pattern, 0, 0);
  7091. +
  7092. +          if (set && GET_MODE (SET_SRC (set)) == DImode)
  7093. +            {
  7094. +              use_dca = TRUE;
  7095. +              break;
  7096. +            }
  7097. +        }
  7098. +        }
  7099. +
  7100. +      if (use_dca)
  7101. +        {
  7102. +          reg_alloc_order[0] = 1;    /* edx */
  7103. +          reg_alloc_order[1] = 2;    /* ecx */
  7104. +          reg_alloc_order[2] = 0;    /* eax */
  7105. +        }
  7106. +    }
  7107. +    }
  7108. +}
  7109. +
  7110. +
  7111. +/* Output an insn whose source is a 386 integer register.  SRC is the
  7112. +   rtx for the register, and TEMPLATE is the op-code template.  SRC may
  7113. +   be either SImode or DImode.
  7114. +
  7115. +   The template will be output with operands[0] as SRC, and operands[1]
  7116. +   as a pointer to the top of the 386 stack.  So a call from floatsidf2
  7117. +   would look like this:
  7118. +
  7119. +      output_op_from_reg (operands[1], AS1 (fild%z0,%1));
  7120. +
  7121. +   where %z0 corresponds to the caller's operands[1], and is used to
  7122. +   emit the proper size suffix.
  7123. +
  7124. +   ??? Extend this to handle HImode - a 387 can load and store HImode
  7125. +   values directly. */
  7126. +
  7127. +void
  7128. +output_op_from_reg (src, template)
  7129. +     rtx src;
  7130. +     char *template;
  7131. +{
  7132. +  rtx xops[4];
  7133. +  int size = GET_MODE_SIZE (GET_MODE (src));
  7134. +
  7135. +  xops[0] = src;
  7136. +  xops[1] = AT_SP (Pmode);
  7137. +  xops[2] = GEN_INT (size);
  7138. +  xops[3] = stack_pointer_rtx;
  7139. +
  7140. +  if (size > UNITS_PER_WORD)
  7141. +    {
  7142. +      rtx high;
  7143. +      if (size > 2 * UNITS_PER_WORD)
  7144. +    {
  7145. +      high = gen_rtx (REG, SImode, REGNO (src) + 2);
  7146. +      output_asm_insn (AS1 (push%L0,%0), &high);
  7147. +    }
  7148. +      high = gen_rtx (REG, SImode, REGNO (src) + 1);
  7149. +      output_asm_insn (AS1 (push%L0,%0), &high);
  7150. +    }
  7151. +  output_asm_insn (AS1 (push%L0,%0), &src);
  7152. +
  7153. +  output_asm_insn (template, xops);
  7154. +
  7155. +  output_asm_insn (AS2 (add%L3,%2,%3), xops);
  7156. +}
  7157. +
  7158. +/* Output an insn to pop an value from the 387 top-of-stack to 386
  7159. +   register DEST. The 387 register stack is popped if DIES is true.  If
  7160. +   the mode of DEST is an integer mode, a `fist' integer store is done,
  7161. +   otherwise a `fst' float store is done. */
  7162. +
  7163. +void
  7164. +output_to_reg (dest, dies)
  7165. +     rtx dest;
  7166. +     int dies;
  7167. +{
  7168. +  rtx xops[4];
  7169. +  int size = GET_MODE_SIZE (GET_MODE (dest));
  7170. +
  7171. +  xops[0] = AT_SP (Pmode);
  7172. +  xops[1] = stack_pointer_rtx;
  7173. +  xops[2] = GEN_INT (size);
  7174. +  xops[3] = dest;
  7175. +
  7176. +  output_asm_insn (AS2 (sub%L1,%2,%1), xops);
  7177. +
  7178. +  if (GET_MODE_CLASS (GET_MODE (dest)) == MODE_INT)
  7179. +    {
  7180. +      if (dies)
  7181. +    output_asm_insn (AS1 (fistp%z3,%y0), xops);
  7182. +      else
  7183. +    output_asm_insn (AS1 (fist%z3,%y0), xops);
  7184. +    }
  7185. +  else if (GET_MODE_CLASS (GET_MODE (dest)) == MODE_FLOAT)
  7186. +    {
  7187. +      if (dies)
  7188. +    output_asm_insn (AS1 (fstp%z3,%y0), xops);
  7189. +      else
  7190. +    {
  7191. +      if (GET_MODE (dest) == XFmode)
  7192. +        {
  7193. +          output_asm_insn (AS1 (fstp%z3,%y0), xops);
  7194. +          output_asm_insn (AS1 (fld%z3,%y0), xops);
  7195. +        }
  7196. +      else
  7197. +        output_asm_insn (AS1 (fst%z3,%y0), xops);
  7198. +    }
  7199. +    }
  7200. +  else
  7201. +    abort ();
  7202. +
  7203. +  output_asm_insn (AS1 (pop%L0,%0), &dest);
  7204. +
  7205. +  if (size > UNITS_PER_WORD)
  7206. +    {
  7207. +      dest = gen_rtx (REG, SImode, REGNO (dest) + 1);
  7208. +      output_asm_insn (AS1 (pop%L0,%0), &dest);
  7209. +      if (size > 2 * UNITS_PER_WORD)
  7210. +    {
  7211. +      dest = gen_rtx (REG, SImode, REGNO (dest) + 1);
  7212. +      output_asm_insn (AS1 (pop%L0,%0), &dest);
  7213. +    }
  7214. +    }
  7215. +}
  7216. +
  7217. +char *
  7218. +singlemove_string (operands)
  7219. +     rtx *operands;
  7220. +{
  7221. +  rtx x;
  7222. +  if (GET_CODE (operands[0]) == MEM
  7223. +      && GET_CODE (x = XEXP (operands[0], 0)) == PRE_DEC)
  7224. +    {
  7225. +      if (XEXP (x, 0) != stack_pointer_rtx)
  7226. +    abort ();
  7227. +      return "push%L1 %1";
  7228. +    }
  7229. +  else if (GET_CODE (operands[1]) == CONST_DOUBLE)
  7230. +    {
  7231. +      return output_move_const_single (operands);
  7232. +    }
  7233. +  else if (GET_CODE (operands[0]) == REG || GET_CODE (operands[1]) == REG)
  7234. +    return AS2 (mov%L0,%1,%0);
  7235. +  else if (CONSTANT_P (operands[1]))
  7236. +    return AS2 (mov%L0,%1,%0);
  7237. +  else
  7238. +    {
  7239. +      output_asm_insn ("push%L1 %1", operands);
  7240. +      return "pop%L0 %0";
  7241. +    }
  7242. +}
  7243. +
  7244. +/* Return a REG that occurs in ADDR with coefficient 1.
  7245. +   ADDR can be effectively incremented by incrementing REG.  */
  7246. +
  7247. +static rtx
  7248. +find_addr_reg (addr)
  7249. +     rtx addr;
  7250. +{
  7251. +  while (GET_CODE (addr) == PLUS)
  7252. +    {
  7253. +      if (GET_CODE (XEXP (addr, 0)) == REG)
  7254. +    addr = XEXP (addr, 0);
  7255. +      else if (GET_CODE (XEXP (addr, 1)) == REG)
  7256. +    addr = XEXP (addr, 1);
  7257. +      else if (CONSTANT_P (XEXP (addr, 0)))
  7258. +    addr = XEXP (addr, 1);
  7259. +      else if (CONSTANT_P (XEXP (addr, 1)))
  7260. +    addr = XEXP (addr, 0);
  7261. +      else
  7262. +    abort ();
  7263. +    }
  7264. +  if (GET_CODE (addr) == REG)
  7265. +    return addr;
  7266. +  abort ();
  7267. +}
  7268. +
  7269. +
  7270. +/* Output an insn to add the constant N to the register X.  */
  7271. +
  7272. +static void
  7273. +asm_add (n, x)
  7274. +     int n;
  7275. +     rtx x;
  7276. +{
  7277. +  rtx xops[2];
  7278. +  xops[0] = x;
  7279. +
  7280. +  if (n == -1)
  7281. +    output_asm_insn (AS1 (dec%L0,%0), xops);
  7282. +  else if (n == 1)
  7283. +    output_asm_insn (AS1 (inc%L0,%0), xops);
  7284. +  else if (n < 0)
  7285. +    {
  7286. +      xops[1] = GEN_INT (-n);
  7287. +      output_asm_insn (AS2 (sub%L0,%1,%0), xops);
  7288. +    }
  7289. +  else if (n > 0)
  7290. +    {
  7291. +      xops[1] = GEN_INT (n);
  7292. +      output_asm_insn (AS2 (add%L0,%1,%0), xops);
  7293. +    }
  7294. +}
  7295. +
  7296. +
  7297. +/* Output assembler code to perform a doubleword move insn
  7298. +   with operands OPERANDS.  */
  7299. +
  7300. +char *
  7301. +output_move_double (operands)
  7302. +     rtx *operands;
  7303. +{
  7304. +  enum {REGOP, OFFSOP, MEMOP, PUSHOP, POPOP, CNSTOP, RNDOP } optype0, optype1;
  7305. +  rtx latehalf[2];
  7306. +  rtx middlehalf[2];
  7307. +  rtx xops[2];
  7308. +  rtx addreg0 = 0, addreg1 = 0;
  7309. +  int dest_overlapped_low = 0;
  7310. +  int size = GET_MODE_SIZE (GET_MODE (operands[1]));
  7311. +
  7312. +  middlehalf[0] = 0;
  7313. +  middlehalf[1] = 0;
  7314. +
  7315. +  /* First classify both operands.  */
  7316. +
  7317. +  if (REG_P (operands[0]))
  7318. +    optype0 = REGOP;
  7319. +  else if (offsettable_memref_p (operands[0]))
  7320. +    optype0 = OFFSOP;
  7321. +  else if (GET_CODE (XEXP (operands[0], 0)) == POST_INC)
  7322. +    optype0 = POPOP;
  7323. +  else if (GET_CODE (XEXP (operands[0], 0)) == PRE_DEC)
  7324. +    optype0 = PUSHOP;
  7325. +  else if (GET_CODE (operands[0]) == MEM)
  7326. +    optype0 = MEMOP;
  7327. +  else
  7328. +    optype0 = RNDOP;
  7329. +
  7330. +  if (REG_P (operands[1]))
  7331. +    optype1 = REGOP;
  7332. +  else if (CONSTANT_P (operands[1]))
  7333. +    optype1 = CNSTOP;
  7334. +  else if (offsettable_memref_p (operands[1]))
  7335. +    optype1 = OFFSOP;
  7336. +  else if (GET_CODE (XEXP (operands[1], 0)) == POST_INC)
  7337. +    optype1 = POPOP;
  7338. +  else if (GET_CODE (XEXP (operands[1], 0)) == PRE_DEC)
  7339. +    optype1 = PUSHOP;
  7340. +  else if (GET_CODE (operands[1]) == MEM)
  7341. +    optype1 = MEMOP;
  7342. +  else
  7343. +    optype1 = RNDOP;
  7344. +
  7345. +  /* Check for the cases that the operand constraints are not
  7346. +     supposed to allow to happen.  Abort if we get one,
  7347. +     because generating code for these cases is painful.  */
  7348. +
  7349. +  if (optype0 == RNDOP || optype1 == RNDOP)
  7350. +    abort ();
  7351. +
  7352. +  /* If one operand is decrementing and one is incrementing
  7353. +     decrement the former register explicitly
  7354. +     and change that operand into ordinary indexing.  */
  7355. +
  7356. +  if (optype0 == PUSHOP && optype1 == POPOP)
  7357. +    {
  7358. +      /* ??? Can this ever happen on i386? */
  7359. +      operands[0] = XEXP (XEXP (operands[0], 0), 0);
  7360. +      asm_add (-size, operands[0]);
  7361. +      if (GET_MODE (operands[1]) == XFmode)
  7362. +        operands[0] = gen_rtx (MEM, XFmode, operands[0]);
  7363. +      else if (GET_MODE (operands[0]) == DFmode)
  7364. +        operands[0] = gen_rtx (MEM, DFmode, operands[0]);
  7365. +      else
  7366. +        operands[0] = gen_rtx (MEM, DImode, operands[0]);
  7367. +      optype0 = OFFSOP;
  7368. +    }
  7369. +
  7370. +  if (optype0 == POPOP && optype1 == PUSHOP)
  7371. +    {
  7372. +      /* ??? Can this ever happen on i386? */
  7373. +      operands[1] = XEXP (XEXP (operands[1], 0), 0);
  7374. +      asm_add (-size, operands[1]);
  7375. +      if (GET_MODE (operands[1]) == XFmode)
  7376. +        operands[1] = gen_rtx (MEM, XFmode, operands[1]);
  7377. +      else if (GET_MODE (operands[1]) == DFmode)
  7378. +        operands[1] = gen_rtx (MEM, DFmode, operands[1]);
  7379. +      else
  7380. +        operands[1] = gen_rtx (MEM, DImode, operands[1]);
  7381. +      optype1 = OFFSOP;
  7382. +    }
  7383. +
  7384. +  /* If an operand is an unoffsettable memory ref, find a register
  7385. +     we can increment temporarily to make it refer to the second word.  */
  7386. +
  7387. +  if (optype0 == MEMOP)
  7388. +    addreg0 = find_addr_reg (XEXP (operands[0], 0));
  7389. +
  7390. +  if (optype1 == MEMOP)
  7391. +    addreg1 = find_addr_reg (XEXP (operands[1], 0));
  7392. +
  7393. +  /* Ok, we can do one word at a time.
  7394. +     Normally we do the low-numbered word first,
  7395. +     but if either operand is autodecrementing then we
  7396. +     do the high-numbered word first.
  7397. +
  7398. +     In either case, set up in LATEHALF the operands to use
  7399. +     for the high-numbered word and in some cases alter the
  7400. +     operands in OPERANDS to be suitable for the low-numbered word.  */
  7401. +
  7402. +  if (size == 12)
  7403. +    {
  7404. +      if (optype0 == REGOP)
  7405. +    {
  7406. +      middlehalf[0] = gen_rtx (REG, SImode, REGNO (operands[0]) + 1);
  7407. +      latehalf[0] = gen_rtx (REG, SImode, REGNO (operands[0]) + 2);
  7408. +    }
  7409. +      else if (optype0 == OFFSOP)
  7410. +    {
  7411. +      middlehalf[0] = adj_offsettable_operand (operands[0], 4);
  7412. +      latehalf[0] = adj_offsettable_operand (operands[0], 8);
  7413. +    }
  7414. +      else
  7415. +    {
  7416. +         middlehalf[0] = operands[0];
  7417. +         latehalf[0] = operands[0];
  7418. +    }
  7419. +    
  7420. +      if (optype1 == REGOP)
  7421. +    {
  7422. +          middlehalf[1] = gen_rtx (REG, SImode, REGNO (operands[1]) + 1);
  7423. +          latehalf[1] = gen_rtx (REG, SImode, REGNO (operands[1]) + 2);
  7424. +    }
  7425. +      else if (optype1 == OFFSOP)
  7426. +    {
  7427. +          middlehalf[1] = adj_offsettable_operand (operands[1], 4);
  7428. +          latehalf[1] = adj_offsettable_operand (operands[1], 8);
  7429. +    }
  7430. +      else if (optype1 == CNSTOP)
  7431. +    {
  7432. +      if (GET_CODE (operands[1]) == CONST_DOUBLE)
  7433. +        {
  7434. +          REAL_VALUE_TYPE r; long l[3];
  7435. +
  7436. +          REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
  7437. +          REAL_VALUE_TO_TARGET_LONG_DOUBLE (r, l);
  7438. +          operands[1] = GEN_INT (l[0]);
  7439. +          middlehalf[1] = GEN_INT (l[1]);
  7440. +          latehalf[1] = GEN_INT (l[2]);
  7441. +        }
  7442. +      else if (CONSTANT_P (operands[1]))
  7443. +        /* No non-CONST_DOUBLE constant should ever appear here.  */
  7444. +        abort ();
  7445. +        }
  7446. +      else
  7447. +    {
  7448. +      middlehalf[1] = operands[1];
  7449. +      latehalf[1] = operands[1];
  7450. +    }
  7451. +    }
  7452. +  else /* size is not 12: */
  7453. +    {
  7454. +      if (optype0 == REGOP)
  7455. +    latehalf[0] = gen_rtx (REG, SImode, REGNO (operands[0]) + 1);
  7456. +      else if (optype0 == OFFSOP)
  7457. +    latehalf[0] = adj_offsettable_operand (operands[0], 4);
  7458. +      else
  7459. +    latehalf[0] = operands[0];
  7460. +
  7461. +      if (optype1 == REGOP)
  7462. +    latehalf[1] = gen_rtx (REG, SImode, REGNO (operands[1]) + 1);
  7463. +      else if (optype1 == OFFSOP)
  7464. +    latehalf[1] = adj_offsettable_operand (operands[1], 4);
  7465. +      else if (optype1 == CNSTOP)
  7466. +    {
  7467. +      if (GET_CODE (operands[1]) == CONST_DOUBLE)
  7468. +        split_double (operands[1], &operands[1], &latehalf[1]);
  7469. +      else if (CONSTANT_P (operands[1]))
  7470. +        {
  7471. +          /* ??? jrv: Can this really happen?  A DImode constant
  7472. +         that isn't a CONST_DOUBLE? */
  7473. +          if (GET_CODE (operands[1]) == CONST_INT
  7474. +          && INTVAL (operands[1]) < 0)
  7475. +            latehalf[1] = constm1_rtx;
  7476. +          else
  7477. +            latehalf[1] = const0_rtx;
  7478. +        }
  7479. +    }
  7480. +      else
  7481. +    latehalf[1] = operands[1];
  7482. +    }
  7483. +
  7484. +  /* If insn is effectively movd N (sp),-(sp) then we will do the
  7485. +     high word first.  We should use the adjusted operand 1
  7486. +     (which is N+4 (sp) or N+8 (sp))
  7487. +     for the low word and middle word as well,
  7488. +     to compensate for the first decrement of sp.  */
  7489. +  if (optype0 == PUSHOP
  7490. +      && REGNO (XEXP (XEXP (operands[0], 0), 0)) == STACK_POINTER_REGNUM
  7491. +      && reg_overlap_mentioned_p (stack_pointer_rtx, operands[1]))
  7492. +    middlehalf[1] = operands[1] = latehalf[1];
  7493. +
  7494. +  /* For (set (reg:DI N) (mem:DI ... (reg:SI N) ...)),
  7495. +     if the upper part of reg N does not appear in the MEM, arrange to
  7496. +     emit the move late-half first.  Otherwise, compute the MEM address
  7497. +     into the upper part of N and use that as a pointer to the memory
  7498. +     operand.  */
  7499. +  if (optype0 == REGOP
  7500. +      && (optype1 == OFFSOP || optype1 == MEMOP))
  7501. +    {
  7502. +      if (reg_mentioned_p (operands[0], XEXP (operands[1], 0))
  7503. +      && reg_mentioned_p (latehalf[0], XEXP (operands[1], 0)))
  7504. +    {
  7505. +      /* If both halves of dest are used in the src memory address,
  7506. +         compute the address into latehalf of dest.  */
  7507. +compadr:
  7508. +      xops[0] = latehalf[0];
  7509. +      xops[1] = XEXP (operands[1], 0);
  7510. +      output_asm_insn (AS2 (lea%L0,%a1,%0), xops);
  7511. +      if( GET_MODE (operands[1]) == XFmode )
  7512. +        {
  7513. +/*        abort (); */
  7514. +          operands[1] = gen_rtx (MEM, XFmode, latehalf[0]);
  7515. +          middlehalf[1] = adj_offsettable_operand (operands[1], size-8);
  7516. +          latehalf[1] = adj_offsettable_operand (operands[1], size-4);
  7517. +        }
  7518. +      else
  7519. +        {
  7520. +          operands[1] = gen_rtx (MEM, DImode, latehalf[0]);
  7521. +          latehalf[1] = adj_offsettable_operand (operands[1], size-4);
  7522. +        }
  7523. +    }
  7524. +      else if (size == 12
  7525. +         && reg_mentioned_p (middlehalf[0], XEXP (operands[1], 0)))
  7526. +    {
  7527. +      /* Check for two regs used by both source and dest. */
  7528. +      if (reg_mentioned_p (operands[0], XEXP (operands[1], 0))
  7529. +        || reg_mentioned_p (latehalf[0], XEXP (operands[1], 0)))
  7530. +        goto compadr;
  7531. +
  7532. +      /* JRV says this can't happen: */
  7533. +      if (addreg0 || addreg1)
  7534. +          abort();
  7535. +
  7536. +      /* Only the middle reg conflicts; simply put it last. */
  7537. +      output_asm_insn (singlemove_string (operands), operands);
  7538. +      output_asm_insn (singlemove_string (latehalf), latehalf);
  7539. +      output_asm_insn (singlemove_string (middlehalf), middlehalf);
  7540. +      return "";
  7541. +    }
  7542. +      else if (reg_mentioned_p (operands[0], XEXP (operands[1], 0)))
  7543. +    /* If the low half of dest is mentioned in the source memory
  7544. +       address, the arrange to emit the move late half first.  */
  7545. +    dest_overlapped_low = 1;
  7546. +    }
  7547. +
  7548. +  /* If one or both operands autodecrementing,
  7549. +     do the two words, high-numbered first.  */
  7550. +
  7551. +  /* Likewise,  the first move would clobber the source of the second one,
  7552. +     do them in the other order.  This happens only for registers;
  7553. +     such overlap can't happen in memory unless the user explicitly
  7554. +     sets it up, and that is an undefined circumstance.  */
  7555. +
  7556. +/*
  7557. +  if (optype0 == PUSHOP || optype1 == PUSHOP
  7558. +      || (optype0 == REGOP && optype1 == REGOP
  7559. +      && REGNO (operands[0]) == REGNO (latehalf[1]))
  7560. +      || dest_overlapped_low)
  7561. +*/
  7562. +  if (optype0 == PUSHOP || optype1 == PUSHOP
  7563. +      || (optype0 == REGOP && optype1 == REGOP
  7564. +      && ((middlehalf[1] && REGNO (operands[0]) == REGNO (middlehalf[1]))
  7565. +          || REGNO (operands[0]) == REGNO (latehalf[1])))
  7566. +      || dest_overlapped_low)
  7567. +    {
  7568. +      /* Make any unoffsettable addresses point at high-numbered word.  */
  7569. +      if (addreg0)
  7570. +    asm_add (size-4, addreg0);
  7571. +      if (addreg1)
  7572. +    asm_add (size-4, addreg1);
  7573. +
  7574. +      /* Do that word.  */
  7575. +      output_asm_insn (singlemove_string (latehalf), latehalf);
  7576. +
  7577. +      /* Undo the adds we just did.  */
  7578. +      if (addreg0)
  7579. +         asm_add (-4, addreg0);
  7580. +      if (addreg1)
  7581. +    asm_add (-4, addreg1);
  7582. +
  7583. +      if (size == 12)
  7584. +        {
  7585. +        output_asm_insn (singlemove_string (middlehalf), middlehalf);
  7586. +        if (addreg0)
  7587. +           asm_add (-4, addreg0);
  7588. +        if (addreg1)
  7589. +       asm_add (-4, addreg1);
  7590. +    }
  7591. +
  7592. +      /* Do low-numbered word.  */
  7593. +      return singlemove_string (operands);
  7594. +    }
  7595. +
  7596. +  /* Normal case: do the two words, low-numbered first.  */
  7597. +
  7598. +  output_asm_insn (singlemove_string (operands), operands);
  7599. +
  7600. +  /* Do the middle one of the three words for long double */
  7601. +  if (size == 12)
  7602. +    {
  7603. +      if (addreg0)
  7604. +        asm_add (4, addreg0);
  7605. +      if (addreg1)
  7606. +        asm_add (4, addreg1);
  7607. +
  7608. +      output_asm_insn (singlemove_string (middlehalf), middlehalf);
  7609. +    }
  7610. +
  7611. +  /* Make any unoffsettable addresses point at high-numbered word.  */
  7612. +  if (addreg0)
  7613. +    asm_add (4, addreg0);
  7614. +  if (addreg1)
  7615. +    asm_add (4, addreg1);
  7616. +
  7617. +  /* Do that word.  */
  7618. +  output_asm_insn (singlemove_string (latehalf), latehalf);
  7619. +
  7620. +  /* Undo the adds we just did.  */
  7621. +  if (addreg0)
  7622. +    asm_add (4-size, addreg0);
  7623. +  if (addreg1)
  7624. +    asm_add (4-size, addreg1);
  7625. +
  7626. +  return "";
  7627. +}
  7628. +
  7629. +
  7630. +#define MAX_TMPS 2        /* max temporary registers used */
  7631. +
  7632. +/* Output the appropriate code to move push memory on the stack */
  7633. +
  7634. +char *
  7635. +output_move_pushmem (operands, insn, length, tmp_start, n_operands)
  7636. +     rtx operands[];
  7637. +     rtx insn;
  7638. +     int length;
  7639. +     int tmp_start;
  7640. +     int n_operands;
  7641. +{
  7642. +
  7643. +  struct {
  7644. +    char *load;
  7645. +    char *push;
  7646. +    rtx   xops[2];
  7647. +  } tmp_info[MAX_TMPS];
  7648. +
  7649. +  rtx src = operands[1];
  7650. +  int max_tmps = 0;
  7651. +  int offset = 0;
  7652. +  int stack_p = reg_overlap_mentioned_p (stack_pointer_rtx, src);
  7653. +  int stack_offset = 0;
  7654. +  int i, num_tmps;
  7655. +  rtx xops[1];
  7656. +
  7657. +  if (!offsettable_memref_p (src))
  7658. +    fatal_insn ("Source is not offsettable", insn);
  7659. +
  7660. +  if ((length & 3) != 0)
  7661. +    fatal_insn ("Pushing non-word aligned size", insn);
  7662. +
  7663. +  /* Figure out which temporary registers we have available */
  7664. +  for (i = tmp_start; i < n_operands; i++)
  7665. +    {
  7666. +      if (GET_CODE (operands[i]) == REG)
  7667. +    {
  7668. +      if (reg_overlap_mentioned_p (operands[i], src))
  7669. +        continue;
  7670. +
  7671. +      tmp_info[ max_tmps++ ].xops[1] = operands[i];
  7672. +      if (max_tmps == MAX_TMPS)
  7673. +        break;
  7674. +    }
  7675. +    }
  7676. +
  7677. +  if (max_tmps == 0)
  7678. +    for (offset = length - 4; offset >= 0; offset -= 4)
  7679. +      {
  7680. +    xops[0] = adj_offsettable_operand (src, offset + stack_offset);
  7681. +    output_asm_insn (AS1(push%L0,%0), xops);
  7682. +    if (stack_p)
  7683. +      stack_offset += 4;
  7684. +      }
  7685. +
  7686. +  else
  7687. +    for (offset = length - 4; offset >= 0; )
  7688. +      {
  7689. +    for (num_tmps = 0; num_tmps < max_tmps && offset >= 0; num_tmps++)
  7690. +      {
  7691. +        tmp_info[num_tmps].load    = AS2(mov%L0,%0,%1);
  7692. +        tmp_info[num_tmps].push    = AS1(push%L0,%1);
  7693. +        tmp_info[num_tmps].xops[0] = adj_offsettable_operand (src, offset + stack_offset);
  7694. +        offset -= 4;
  7695. +      }
  7696. +
  7697. +    for (i = 0; i < num_tmps; i++)
  7698. +      output_asm_insn (tmp_info[i].load, tmp_info[i].xops);
  7699. +
  7700. +    for (i = 0; i < num_tmps; i++)
  7701. +      output_asm_insn (tmp_info[i].push, tmp_info[i].xops);
  7702. +
  7703. +    if (stack_p)
  7704. +      stack_offset += 4*num_tmps;
  7705. +      }
  7706. +
  7707. +  return "";
  7708. +}
  7709. +
  7710. +
  7711. +
  7712. +/* Output the appropriate code to move data between two memory locations */
  7713. +
  7714. +char *
  7715. +output_move_memory (operands, insn, length, tmp_start, n_operands)
  7716. +     rtx operands[];
  7717. +     rtx insn;
  7718. +     int length;
  7719. +     int tmp_start;
  7720. +     int n_operands;
  7721. +{
  7722. +  struct {
  7723. +    char *load;
  7724. +    char *store;
  7725. +    rtx   xops[3];
  7726. +  } tmp_info[MAX_TMPS];
  7727. +
  7728. +  rtx dest = operands[0];
  7729. +  rtx src  = operands[1];
  7730. +  rtx qi_tmp = NULL_RTX;
  7731. +  int max_tmps = 0;
  7732. +  int offset = 0;
  7733. +  int i, num_tmps;
  7734. +  rtx xops[3];
  7735. +
  7736. +  if (GET_CODE (dest) == MEM
  7737. +      && GET_CODE (XEXP (dest, 0)) == PRE_INC
  7738. +      && XEXP (XEXP (dest, 0), 0) == stack_pointer_rtx)
  7739. +    return output_move_pushmem (operands, insn, length, tmp_start, n_operands);
  7740. +
  7741. +  if (!offsettable_memref_p (src))
  7742. +    fatal_insn ("Source is not offsettable", insn);
  7743. +
  7744. +  if (!offsettable_memref_p (dest))
  7745. +    fatal_insn ("Destination is not offsettable", insn);
  7746. +
  7747. +  /* Figure out which temporary registers we have available */
  7748. +  for (i = tmp_start; i < n_operands; i++)
  7749. +    {
  7750. +      if (GET_CODE (operands[i]) == REG)
  7751. +    {
  7752. +      if ((length & 1) != 0 && !qi_tmp && QI_REG_P (operands[i]))
  7753. +        qi_tmp = operands[i];
  7754. +
  7755. +      if (reg_overlap_mentioned_p (operands[i], dest))
  7756. +        fatal_insn ("Temporary register overlaps the destination", insn);
  7757. +
  7758. +      if (reg_overlap_mentioned_p (operands[i], src))
  7759. +        fatal_insn ("Temporary register overlaps the source", insn);
  7760. +
  7761. +      tmp_info[ max_tmps++ ].xops[2] = operands[i];
  7762. +      if (max_tmps == MAX_TMPS)
  7763. +        break;
  7764. +    }
  7765. +    }
  7766. +
  7767. +  if (max_tmps == 0)
  7768. +    fatal_insn ("No scratch registers were found to do memory->memory moves", insn);
  7769. +
  7770. +  if ((length & 1) != 0)
  7771. +    {
  7772. +      if (!qi_tmp)
  7773. +    fatal_insn ("No byte register found when moving odd # of bytes.", insn);
  7774. +    }
  7775. +
  7776. +  while (length > 1)
  7777. +    {
  7778. +      for (num_tmps = 0; num_tmps < max_tmps; num_tmps++)
  7779. +    {
  7780. +      if (length >= 4)
  7781. +        {
  7782. +          tmp_info[num_tmps].load    = AS2(mov%L0,%1,%2);
  7783. +          tmp_info[num_tmps].store   = AS2(mov%L0,%2,%0);
  7784. +          tmp_info[num_tmps].xops[0] = adj_offsettable_operand (dest, offset);
  7785. +          tmp_info[num_tmps].xops[1] = adj_offsettable_operand (src, offset);
  7786. +          offset += 4;
  7787. +          length -= 4;
  7788. +        }
  7789. +      else if (length >= 2)
  7790. +        {
  7791. +          tmp_info[num_tmps].load    = AS2(mov%W0,%1,%2);
  7792. +          tmp_info[num_tmps].store   = AS2(mov%W0,%2,%0);
  7793. +          tmp_info[num_tmps].xops[0] = adj_offsettable_operand (dest, offset);
  7794. +          tmp_info[num_tmps].xops[1] = adj_offsettable_operand (src, offset);
  7795. +          offset += 2;
  7796. +          length -= 2;
  7797. +        }
  7798. +      else
  7799. +        break;
  7800. +    }
  7801. +
  7802. +      for (i = 0; i < num_tmps; i++)
  7803. +    output_asm_insn (tmp_info[i].load, tmp_info[i].xops);
  7804. +
  7805. +      for (i = 0; i < num_tmps; i++)
  7806. +    output_asm_insn (tmp_info[i].store, tmp_info[i].xops);
  7807. +    }
  7808. +
  7809. +  if (length == 1)
  7810. +    {
  7811. +      xops[0] = adj_offsettable_operand (dest, offset);
  7812. +      xops[1] = adj_offsettable_operand (src, offset);
  7813. +      xops[2] = qi_tmp;
  7814. +      output_asm_insn (AS2(mov%B0,%1,%2), xops);
  7815. +      output_asm_insn (AS2(mov%B0,%2,%0), xops);
  7816. +    }
  7817. +
  7818. +  return "";
  7819. +}
  7820. +
  7821. +
  7822. +int
  7823. +standard_80387_constant_p (x)
  7824. +     rtx x;
  7825. +{
  7826. +#if ! defined (REAL_IS_NOT_DOUBLE) || defined (REAL_ARITHMETIC)
  7827. +  REAL_VALUE_TYPE d;
  7828. +  jmp_buf handler;
  7829. +  int is0, is1;
  7830. +
  7831. +  if (setjmp (handler))
  7832. +    return 0;
  7833. +
  7834. +  set_float_handler (handler);
  7835. +  REAL_VALUE_FROM_CONST_DOUBLE (d, x);
  7836. +  is0 = REAL_VALUES_EQUAL (d, dconst0);
  7837. +  is1 = REAL_VALUES_EQUAL (d, dconst1);
  7838. +  set_float_handler (NULL_PTR);
  7839. +
  7840. +  if (is0)
  7841. +    return 1;
  7842. +
  7843. +  if (is1)
  7844. +    return 2;
  7845. +
  7846. +  /* Note that on the 80387, other constants, such as pi,
  7847. +     are much slower to load as standard constants
  7848. +     than to load from doubles in memory!  */
  7849. +#endif
  7850. +
  7851. +  return 0;
  7852. +}
  7853. +
  7854. +char *
  7855. +output_move_const_single (operands)
  7856. +     rtx *operands;
  7857. +{
  7858. +  if (FP_REG_P (operands[0]))
  7859. +    {
  7860. +      int conval = standard_80387_constant_p (operands[1]);
  7861. +
  7862. +      if (conval == 1)
  7863. +    return "fldz";
  7864. +
  7865. +      if (conval == 2)
  7866. +    return "fld1";
  7867. +    }
  7868. +  if (GET_CODE (operands[1]) == CONST_DOUBLE)
  7869. +    {
  7870. +      REAL_VALUE_TYPE r; long l;
  7871. +
  7872. +      if (GET_MODE (operands[1]) == XFmode)
  7873. +    abort ();
  7874. +
  7875. +      REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
  7876. +      REAL_VALUE_TO_TARGET_SINGLE (r, l);
  7877. +      operands[1] = GEN_INT (l);
  7878. +    }
  7879. +  return singlemove_string (operands);
  7880. +}
  7881. +
  7882. +/* Returns 1 if OP is either a symbol reference or a sum of a symbol
  7883. +   reference and a constant.  */
  7884. +
  7885. +int
  7886. +symbolic_operand (op, mode)
  7887. +     register rtx op;
  7888. +     enum machine_mode mode;
  7889. +{
  7890. +  switch (GET_CODE (op))
  7891. +    {
  7892. +    case SYMBOL_REF:
  7893. +    case LABEL_REF:
  7894. +      return 1;
  7895. +    case CONST:
  7896. +      op = XEXP (op, 0);
  7897. +      return ((GET_CODE (XEXP (op, 0)) == SYMBOL_REF
  7898. +           || GET_CODE (XEXP (op, 0)) == LABEL_REF)
  7899. +          && GET_CODE (XEXP (op, 1)) == CONST_INT);
  7900. +    default:
  7901. +      return 0;
  7902. +    }
  7903. +}
  7904. +
  7905. +/* Test for a valid operand for a call instruction.
  7906. +   Don't allow the arg pointer register or virtual regs
  7907. +   since they may change into reg + const, which the patterns
  7908. +   can't handle yet.  */
  7909. +
  7910. +int
  7911. +call_insn_operand (op, mode)
  7912. +     rtx op;
  7913. +     enum machine_mode mode;
  7914. +{
  7915. +  if (GET_CODE (op) == MEM
  7916. +      && ((CONSTANT_ADDRESS_P (XEXP (op, 0))
  7917. +       /* This makes a difference for PIC.  */
  7918. +       && general_operand (XEXP (op, 0), Pmode))
  7919. +      || (GET_CODE (XEXP (op, 0)) == REG
  7920. +          && XEXP (op, 0) != arg_pointer_rtx
  7921. +          && !(REGNO (XEXP (op, 0)) >= FIRST_PSEUDO_REGISTER
  7922. +           && REGNO (XEXP (op, 0)) <= LAST_VIRTUAL_REGISTER))))
  7923. +    return 1;
  7924. +  return 0;
  7925. +}
  7926. +
  7927. +/* Like call_insn_operand but allow (mem (symbol_ref ...))
  7928. +   even if pic.  */
  7929. +
  7930. +int
  7931. +expander_call_insn_operand (op, mode)
  7932. +     rtx op;
  7933. +     enum machine_mode mode;
  7934. +{
  7935. +  if (GET_CODE (op) == MEM
  7936. +      && (CONSTANT_ADDRESS_P (XEXP (op, 0))
  7937. +      || (GET_CODE (XEXP (op, 0)) == REG
  7938. +          && XEXP (op, 0) != arg_pointer_rtx
  7939. +          && !(REGNO (XEXP (op, 0)) >= FIRST_PSEUDO_REGISTER
  7940. +           && REGNO (XEXP (op, 0)) <= LAST_VIRTUAL_REGISTER))))
  7941. +    return 1;
  7942. +  return 0;
  7943. +}
  7944. +
  7945. +/* Returns 1 if OP contains a symbol reference */
  7946. +
  7947. +int
  7948. +symbolic_reference_mentioned_p (op)
  7949. +     rtx op;
  7950. +{
  7951. +  register char *fmt;
  7952. +  register int i;
  7953. +
  7954. +  if (GET_CODE (op) == SYMBOL_REF || GET_CODE (op) == LABEL_REF)
  7955. +    return 1;
  7956. +
  7957. +  fmt = GET_RTX_FORMAT (GET_CODE (op));
  7958. +  for (i = GET_RTX_LENGTH (GET_CODE (op)) - 1; i >= 0; i--)
  7959. +    {
  7960. +      if (fmt[i] == 'E')
  7961. +    {
  7962. +      register int j;
  7963. +
  7964. +      for (j = XVECLEN (op, i) - 1; j >= 0; j--)
  7965. +        if (symbolic_reference_mentioned_p (XVECEXP (op, i, j)))
  7966. +          return 1;
  7967. +    }
  7968. +      else if (fmt[i] == 'e' && symbolic_reference_mentioned_p (XEXP (op, i)))
  7969. +    return 1;
  7970. +    }
  7971. +
  7972. +  return 0;
  7973. +}
  7974. +
  7975. +/* This function generates the assembly code for function entry.
  7976. +   FILE is an stdio stream to output the code to.
  7977. +   SIZE is an int: how many units of temporary storage to allocate. */
  7978. +
  7979. +void
  7980. +function_prologue (file, size)
  7981. +     FILE *file;
  7982. +     int size;
  7983. +{
  7984. +  register int regno;
  7985. +  int limit;
  7986. +  rtx xops[4];
  7987. +  int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table
  7988. +                  || current_function_uses_const_pool);
  7989. +
  7990. +  xops[0] = stack_pointer_rtx;
  7991. +  xops[1] = frame_pointer_rtx;
  7992. +  xops[2] = GEN_INT (size);
  7993. +  if (frame_pointer_needed)
  7994. +    {
  7995. +      output_asm_insn ("push%L1 %1", xops);
  7996. +      output_asm_insn (AS2 (mov%L0,%0,%1), xops);
  7997. +    }
  7998. +
  7999. +  if (size)
  8000. +    output_asm_insn (AS2 (sub%L0,%2,%0), xops);
  8001. +
  8002. +  /* Note If use enter it is NOT reversed args.
  8003. +     This one is not reversed from intel!!
  8004. +     I think enter is slower.  Also sdb doesn't like it.
  8005. +     But if you want it the code is:
  8006. +     {
  8007. +     xops[3] = const0_rtx;
  8008. +     output_asm_insn ("enter %2,%3", xops);
  8009. +     }
  8010. +     */
  8011. +  limit = (frame_pointer_needed ? FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM);
  8012. +  for (regno = limit - 1; regno >= 0; regno--)
  8013. +    if ((regs_ever_live[regno] && ! call_used_regs[regno])
  8014. +    || (regno == PIC_OFFSET_TABLE_REGNUM && pic_reg_used))
  8015. +      {
  8016. +    xops[0] = gen_rtx (REG, SImode, regno);
  8017. +    output_asm_insn ("push%L0 %0", xops);
  8018. +      }
  8019. +
  8020. +  if (pic_reg_used)
  8021. +    {
  8022. +      xops[0] = pic_offset_table_rtx;
  8023. +      xops[1] = (rtx) gen_label_rtx ();
  8024. +
  8025. +      output_asm_insn (AS1 (call,%P1), xops);
  8026. +      ASM_OUTPUT_INTERNAL_LABEL (file, "L", CODE_LABEL_NUMBER (xops[1]));
  8027. +      output_asm_insn (AS1 (pop%L0,%0), xops);
  8028. +      output_asm_insn ("addl $_GLOBAL_OFFSET_TABLE_+[.-%P1],%0", xops);
  8029. +    }
  8030. +}
  8031. +
  8032. +/* Return 1 if it is appropriate to emit `ret' instructions in the
  8033. +   body of a function.  Do this only if the epilogue is simple, needing a
  8034. +   couple of insns.  Prior to reloading, we can't tell how many registers
  8035. +   must be saved, so return 0 then.
  8036. +
  8037. +   If NON_SAVING_SETJMP is defined and true, then it is not possible
  8038. +   for the epilogue to be simple, so return 0.  This is a special case
  8039. +   since NON_SAVING_SETJMP will not cause regs_ever_live to change until
  8040. +   final, but jump_optimize may need to know sooner if a `return' is OK.  */
  8041. +
  8042. +int
  8043. +simple_386_epilogue ()
  8044. +{
  8045. +  int regno;
  8046. +  int nregs = 0;
  8047. +  int reglimit = (frame_pointer_needed
  8048. +          ? FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM);
  8049. +  int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table
  8050. +                  || current_function_uses_const_pool);
  8051. +
  8052. +#ifdef NON_SAVING_SETJMP
  8053. +  if (NON_SAVING_SETJMP && current_function_calls_setjmp)
  8054. +    return 0;
  8055. +#endif
  8056. +
  8057. +  if (! reload_completed)
  8058. +    return 0;
  8059. +
  8060. +  for (regno = reglimit - 1; regno >= 0; regno--)
  8061. +    if ((regs_ever_live[regno] && ! call_used_regs[regno])
  8062. +    || (regno == PIC_OFFSET_TABLE_REGNUM && pic_reg_used))
  8063. +      nregs++;
  8064. +
  8065. +  return nregs == 0 || ! frame_pointer_needed;
  8066. +}
  8067. +
  8068. +
  8069. +/* This function generates the assembly code for function exit.
  8070. +   FILE is an stdio stream to output the code to.
  8071. +   SIZE is an int: how many units of temporary storage to deallocate. */
  8072. +
  8073. +void
  8074. +function_epilogue (file, size)
  8075. +     FILE *file;
  8076. +     int size;
  8077. +{
  8078. +  register int regno;
  8079. +  register int nregs, limit;
  8080. +  int offset;
  8081. +  rtx xops[3];
  8082. +  int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table
  8083. +                  || current_function_uses_const_pool);
  8084. +
  8085. +  /* Compute the number of registers to pop */
  8086. +
  8087. +  limit = (frame_pointer_needed
  8088. +       ? FRAME_POINTER_REGNUM
  8089. +       : STACK_POINTER_REGNUM);
  8090. +
  8091. +  nregs = 0;
  8092. +
  8093. +  for (regno = limit - 1; regno >= 0; regno--)
  8094. +    if ((regs_ever_live[regno] && ! call_used_regs[regno])
  8095. +    || (regno == PIC_OFFSET_TABLE_REGNUM && pic_reg_used))
  8096. +      nregs++;
  8097. +
  8098. +  /* sp is often  unreliable so we must go off the frame pointer,
  8099. +   */
  8100. +
  8101. +  /* In reality, we may not care if sp is unreliable, because we can
  8102. +     restore the register relative to the frame pointer.  In theory,
  8103. +     since each move is the same speed as a pop, and we don't need the
  8104. +     leal, this is faster.  For now restore multiple registers the old
  8105. +     way. */
  8106. +
  8107. +  offset = -size - (nregs * UNITS_PER_WORD);
  8108. +
  8109. +  xops[2] = stack_pointer_rtx;
  8110. +
  8111. +  if (nregs > 1 || ! frame_pointer_needed)
  8112. +    {
  8113. +      if (frame_pointer_needed)
  8114. +    {
  8115. +      xops[0] = adj_offsettable_operand (AT_BP (Pmode), offset);
  8116. +      output_asm_insn (AS2 (lea%L2,%0,%2), xops);
  8117. +    }
  8118. +
  8119. +      for (regno = 0; regno < limit; regno++)
  8120. +    if ((regs_ever_live[regno] && ! call_used_regs[regno])
  8121. +        || (regno == PIC_OFFSET_TABLE_REGNUM && pic_reg_used))
  8122. +      {
  8123. +        xops[0] = gen_rtx (REG, SImode, regno);
  8124. +        output_asm_insn ("pop%L0 %0", xops);
  8125. +      }
  8126. +    }
  8127. +  else
  8128. +    for (regno = 0; regno < limit; regno++)
  8129. +      if ((regs_ever_live[regno] && ! call_used_regs[regno])
  8130. +      || (regno == PIC_OFFSET_TABLE_REGNUM && pic_reg_used))
  8131. +    {
  8132. +      xops[0] = gen_rtx (REG, SImode, regno);
  8133. +      xops[1] = adj_offsettable_operand (AT_BP (Pmode), offset);
  8134. +      output_asm_insn (AS2 (mov%L0,%1,%0), xops);
  8135. +      offset += 4;
  8136. +    }
  8137. +
  8138. +  if (frame_pointer_needed)
  8139. +    {
  8140. +      /* On i486, mov & pop is faster than "leave". */
  8141. +
  8142. +      if (!TARGET_386)
  8143. +    {
  8144. +      xops[0] = frame_pointer_rtx;
  8145. +      output_asm_insn (AS2 (mov%L2,%0,%2), xops);
  8146. +      output_asm_insn ("pop%L0 %0", xops);
  8147. +    }
  8148. +      else
  8149. +    output_asm_insn ("leave", xops);
  8150. +    }
  8151. +  else if (size)
  8152. +    {
  8153. +      /* If there is no frame pointer, we must still release the frame. */
  8154. +
  8155. +      xops[0] = GEN_INT (size);
  8156. +      output_asm_insn (AS2 (add%L2,%0,%2), xops);
  8157. +    }
  8158. +
  8159. +  if (current_function_pops_args && current_function_args_size)
  8160. +    {
  8161. +      xops[1] = GEN_INT (current_function_pops_args);
  8162. +
  8163. +      /* i386 can only pop 32K bytes (maybe 64K?  Is it signed?).  If
  8164. +     asked to pop more, pop return address, do explicit add, and jump
  8165. +     indirectly to the caller. */
  8166. +
  8167. +      if (current_function_pops_args >= 32768)
  8168. +    {
  8169. +      /* ??? Which register to use here? */
  8170. +      xops[0] = gen_rtx (REG, SImode, 2);
  8171. +      output_asm_insn ("pop%L0 %0", xops);
  8172. +      output_asm_insn (AS2 (add%L2,%1,%2), xops);
  8173. +      output_asm_insn ("jmp %*%0", xops);
  8174. +    }
  8175. +      else
  8176. +      output_asm_insn ("ret %1", xops);
  8177. +    }
  8178. +  else
  8179. +    output_asm_insn ("ret", xops);
  8180. +}
  8181. +
  8182. +
  8183. +/* GO_IF_LEGITIMATE_ADDRESS recognizes an RTL expression
  8184. +   that is a valid memory address for an instruction.
  8185. +   The MODE argument is the machine mode for the MEM expression
  8186. +   that wants to use this address.
  8187. +
  8188. +   On x86, legitimate addresses are:
  8189. +    base                movl (base),reg
  8190. +    displacement            movl disp,reg
  8191. +    base + displacement        movl disp(base),reg
  8192. +    index + base            movl (base,index),reg
  8193. +    (index + base) + displacement    movl disp(base,index),reg
  8194. +    index*scale            movl (,index,scale),reg
  8195. +    index*scale + disp        movl disp(,index,scale),reg
  8196. +    index*scale + base         movl (base,index,scale),reg
  8197. +    (index*scale + base) + disp    movl disp(base,index,scale),reg
  8198. +
  8199. +    In each case, scale can be 1, 2, 4, 8.  */
  8200. +
  8201. +/* This is exactly the same as print_operand_addr, except that
  8202. +   it recognizes addresses instead of printing them.
  8203. +
  8204. +   It only recognizes address in canonical form.  LEGITIMIZE_ADDRESS should
  8205. +   convert common non-canonical forms to canonical form so that they will
  8206. +   be recognized.  */
  8207. +
  8208. +#define ADDR_INVALID(msg,insn)                        \
  8209. +do {                                    \
  8210. +  if (TARGET_DEBUG_ADDR)                        \
  8211. +    {                                    \
  8212. +      fprintf (stderr, msg);                        \
  8213. +      debug_rtx (insn);                            \
  8214. +    }                                    \
  8215. +} while (0)
  8216. +
  8217. +int
  8218. +legitimate_address_p (mode, addr, strict)
  8219. +     enum machine_mode mode;
  8220. +     register rtx addr;
  8221. +     int strict;
  8222. +{
  8223. +  rtx base  = NULL_RTX;
  8224. +  rtx indx  = NULL_RTX;
  8225. +  rtx scale = NULL_RTX;
  8226. +  rtx disp  = NULL_RTX;
  8227. +
  8228. +  if (TARGET_DEBUG_ADDR)
  8229. +    {
  8230. +      fprintf (stderr,
  8231. +           "\n==========\nGO_IF_LEGITIMATE_ADDRESS, mode = %s, strict = %d\n",
  8232. +           GET_MODE_NAME (mode), strict);
  8233. +
  8234. +      debug_rtx (addr);
  8235. +    }
  8236. +
  8237. +  if (GET_CODE (addr) == REG || GET_CODE (addr) == SUBREG)
  8238. +      base = addr;                /* base reg */
  8239. +
  8240. +  else if (GET_CODE (addr) == PLUS)
  8241. +    {
  8242. +      rtx op0 = XEXP (addr, 0);
  8243. +      rtx op1 = XEXP (addr, 1);
  8244. +      enum rtx_code code0 = GET_CODE (op0);
  8245. +      enum rtx_code code1 = GET_CODE (op1);
  8246. +
  8247. +      if (code0 == REG || code0 == SUBREG)
  8248. +    {
  8249. +      if (code1 == REG || code1 == SUBREG)
  8250. +        {
  8251. +          indx = op0;            /* index + base */
  8252. +          base = op1;
  8253. +        }
  8254. +
  8255. +      else
  8256. +        {
  8257. +          base = op0;            /* base + displacement */
  8258. +          disp = op1;
  8259. +        }
  8260. +    }
  8261. +
  8262. +      else if (code0 == MULT)
  8263. +    {
  8264. +      indx  = XEXP (op0, 0);
  8265. +      scale = XEXP (op0, 1);
  8266. +
  8267. +      if (code1 == REG || code1 == SUBREG)
  8268. +        base = op1;                /* index*scale + base */
  8269. +
  8270. +      else
  8271. +        disp = op1;                /* index*scale + disp */
  8272. +    }
  8273. +
  8274. +      else if (code0 == PLUS && GET_CODE (XEXP (op0, 0)) == MULT)
  8275. +    {
  8276. +      indx  = XEXP (XEXP (op0, 0), 0);    /* index*scale + base + disp */
  8277. +      scale = XEXP (XEXP (op0, 0), 1);
  8278. +      base  = XEXP (op0, 1);
  8279. +      disp  = op1;
  8280. +    }
  8281. +
  8282. +      else if (code0 == PLUS)
  8283. +    {
  8284. +      indx = XEXP (op0, 0);            /* index + base + disp */
  8285. +      base = XEXP (op0, 1);
  8286. +      disp = op1;
  8287. +    }
  8288. +
  8289. +      else
  8290. +    {
  8291. +      ADDR_INVALID ("PLUS subcode is not valid.\n", op0);
  8292. +      return FALSE;
  8293. +    }
  8294. +    }
  8295. +
  8296. +  else if (GET_CODE (addr) == MULT)
  8297. +    {
  8298. +      indx  = XEXP (addr, 0);            /* index*scale */
  8299. +      scale = XEXP (addr, 1);
  8300. +    }
  8301. +
  8302. +  else
  8303. +    disp = addr;                /* displacement */
  8304. +
  8305. +  /* Allow arg pointer and stack pointer as index if there is not scaling */
  8306. +  if (base && indx && !scale
  8307. +      && (indx == arg_pointer_rtx || indx == stack_pointer_rtx))
  8308. +    {
  8309. +      rtx tmp = base;
  8310. +      base = indx;
  8311. +      indx = tmp;
  8312. +    }
  8313. +
  8314. +  /* Validate base register */
  8315. +  /* Don't allow SUBREG's here, it can lead to spill failures when the base
  8316. +     is one word out of a two word structure, which is represented internally
  8317. +     as a DImode int.  */
  8318. +  if (base)
  8319. +    {
  8320. +      if (GET_CODE (base) != REG)
  8321. +    {
  8322. +      ADDR_INVALID ("Base is not a register.\n", base);
  8323. +      return FALSE;
  8324. +    }
  8325. +
  8326. +      if ((strict && !REG_OK_FOR_BASE_STRICT_P (base))
  8327. +      || (!strict && !REG_OK_FOR_BASE_NONSTRICT_P (base)))
  8328. +    {
  8329. +      ADDR_INVALID ("Base is not valid.\n", base);
  8330. +      return FALSE;
  8331. +    }
  8332. +    }
  8333. +
  8334. +  /* Validate index register */
  8335. +  /* Don't allow SUBREG's here, it can lead to spill failures when the index
  8336. +     is one word out of a two word structure, which is represented internally
  8337. +     as a DImode int.  */
  8338. +  if (indx)
  8339. +    {
  8340. +      if (GET_CODE (indx) != REG)
  8341. +    {
  8342. +      ADDR_INVALID ("Index is not a register.\n", indx);
  8343. +      return FALSE;
  8344. +    }
  8345. +
  8346. +      if ((strict && !REG_OK_FOR_INDEX_STRICT_P (indx))
  8347. +      || (!strict && !REG_OK_FOR_INDEX_NONSTRICT_P (indx)))
  8348. +    {
  8349. +      ADDR_INVALID ("Index is not valid.\n", indx);
  8350. +      return FALSE;
  8351. +    }
  8352. +    }
  8353. +  else if (scale)
  8354. +    abort ();                    /* scale w/o index illegal */
  8355. +
  8356. +  /* Validate scale factor */
  8357. +  if (scale)
  8358. +    {
  8359. +      HOST_WIDE_INT value;
  8360. +
  8361. +      if (GET_CODE (scale) != CONST_INT)
  8362. +    {
  8363. +      ADDR_INVALID ("Scale is not valid.\n", scale);
  8364. +      return FALSE;
  8365. +    }
  8366. +
  8367. +      value = INTVAL (scale);
  8368. +      if (value != 1 && value != 2 && value != 4 && value != 8)
  8369. +    {
  8370. +      ADDR_INVALID ("Scale is not a good multiplier.\n", scale);
  8371. +      return FALSE;
  8372. +    }
  8373. +    }
  8374. +
  8375. +  /* Validate displacement */
  8376. +  if (disp)
  8377. +    {
  8378. +      if (!CONSTANT_ADDRESS_P (disp))
  8379. +    {
  8380. +      ADDR_INVALID ("Displacement is not valid.\n", disp);
  8381. +      return FALSE;
  8382. +    }
  8383. +
  8384. +      if (GET_CODE (disp) == CONST_DOUBLE)
  8385. +    {
  8386. +      ADDR_INVALID ("Displacement is a const_double.\n", disp);
  8387. +      return FALSE;
  8388. +    }
  8389. +
  8390. +      if (flag_pic && SYMBOLIC_CONST (disp) && base != pic_offset_table_rtx
  8391. +      && (indx != pic_offset_table_rtx || scale != NULL_RTX))
  8392. +    {
  8393. +      ADDR_INVALID ("Displacement is an invalid pic reference.\n", disp);
  8394. +      return FALSE;
  8395. +    }
  8396. +
  8397. +      if (HALF_PIC_P () && HALF_PIC_ADDRESS_P (disp)
  8398. +      && (base != NULL_RTX || indx != NULL_RTX))
  8399. +    {
  8400. +      ADDR_INVALID ("Displacement is an invalid half-pic reference.\n", disp);
  8401. +      return FALSE;
  8402. +    }
  8403. +    }
  8404. +
  8405. +  if (TARGET_DEBUG_ADDR)
  8406. +    fprintf (stderr, "Address is valid.\n");
  8407. +
  8408. +  /* Everything looks valid, return true */
  8409. +  return TRUE;
  8410. +}
  8411. +
  8412. +
  8413. +/* Return a legitimate reference for ORIG (an address) using the
  8414. +   register REG.  If REG is 0, a new pseudo is generated.
  8415. +
  8416. +   There are three types of references that must be handled:
  8417. +
  8418. +   1. Global data references must load the address from the GOT, via
  8419. +      the PIC reg.  An insn is emitted to do this load, and the reg is
  8420. +      returned.
  8421. +
  8422. +   2. Static data references must compute the address as an offset
  8423. +      from the GOT, whose base is in the PIC reg.  An insn is emitted to
  8424. +      compute the address into a reg, and the reg is returned.  Static
  8425. +      data objects have SYMBOL_REF_FLAG set to differentiate them from
  8426. +      global data objects.
  8427. +
  8428. +   3. Constant pool addresses must be handled special.  They are
  8429. +      considered legitimate addresses, but only if not used with regs.
  8430. +      When printed, the output routines know to print the reference with the
  8431. +      PIC reg, even though the PIC reg doesn't appear in the RTL.
  8432. +
  8433. +   GO_IF_LEGITIMATE_ADDRESS rejects symbolic references unless the PIC
  8434. +   reg also appears in the address (except for constant pool references,
  8435. +   noted above).
  8436. +
  8437. +   "switch" statements also require special handling when generating
  8438. +   PIC code.  See comments by the `casesi' insn in i386.md for details.  */
  8439. +
  8440. +rtx
  8441. +legitimize_pic_address (orig, reg)
  8442. +     rtx orig;
  8443. +     rtx reg;
  8444. +{
  8445. +  rtx addr = orig;
  8446. +  rtx new = orig;
  8447. +
  8448. +  if (GET_CODE (addr) == SYMBOL_REF || GET_CODE (addr) == LABEL_REF)
  8449. +    {
  8450. +      if (GET_CODE (addr) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (addr))
  8451. +    reg = new = orig;
  8452. +      else
  8453. +    {
  8454. +      if (reg == 0)
  8455. +        reg = gen_reg_rtx (Pmode);
  8456. +
  8457. +      if ((GET_CODE (addr) == SYMBOL_REF && SYMBOL_REF_FLAG (addr))
  8458. +          || GET_CODE (addr) == LABEL_REF)
  8459. +        new = gen_rtx (PLUS, Pmode, pic_offset_table_rtx, orig);
  8460. +      else
  8461. +        new = gen_rtx (MEM, Pmode,
  8462. +               gen_rtx (PLUS, Pmode,
  8463. +                    pic_offset_table_rtx, orig));
  8464. +
  8465. +      emit_move_insn (reg, new);
  8466. +    }
  8467. +      current_function_uses_pic_offset_table = 1;
  8468. +      return reg;
  8469. +    }
  8470. +  else if (GET_CODE (addr) == CONST || GET_CODE (addr) == PLUS)
  8471. +    {
  8472. +      rtx base;
  8473. +
  8474. +      if (GET_CODE (addr) == CONST)
  8475. +    {
  8476. +      addr = XEXP (addr, 0);
  8477. +      if (GET_CODE (addr) != PLUS)
  8478. +        abort ();
  8479. +    }
  8480. +
  8481. +      if (XEXP (addr, 0) == pic_offset_table_rtx)
  8482. +    return orig;
  8483. +
  8484. +      if (reg == 0)
  8485. +    reg = gen_reg_rtx (Pmode);
  8486. +
  8487. +      base = legitimize_pic_address (XEXP (addr, 0), reg);
  8488. +      addr = legitimize_pic_address (XEXP (addr, 1),
  8489. +                     base == reg ? NULL_RTX : reg);
  8490. +
  8491. +      if (GET_CODE (addr) == CONST_INT)
  8492. +    return plus_constant (base, INTVAL (addr));
  8493. +
  8494. +      if (GET_CODE (addr) == PLUS && CONSTANT_P (XEXP (addr, 1)))
  8495. +    {
  8496. +      base = gen_rtx (PLUS, Pmode, base, XEXP (addr, 0));
  8497. +      addr = XEXP (addr, 1);
  8498. +    }
  8499. +    return gen_rtx (PLUS, Pmode, base, addr);
  8500. +    }
  8501. +  return new;
  8502. +}
  8503. +
  8504. +
  8505. +/* Emit insns to move operands[1] into operands[0].  */
  8506. +
  8507. +void
  8508. +emit_pic_move (operands, mode)
  8509. +     rtx *operands;
  8510. +     enum machine_mode mode;
  8511. +{
  8512. +  rtx temp = reload_in_progress ? operands[0] : gen_reg_rtx (Pmode);
  8513. +
  8514. +  if (GET_CODE (operands[0]) == MEM && SYMBOLIC_CONST (operands[1]))
  8515. +    operands[1] = (rtx) force_reg (SImode, operands[1]);
  8516. +  else
  8517. +    operands[1] = legitimize_pic_address (operands[1], temp);
  8518. +}
  8519. +
  8520. +
  8521. +/* Try machine-dependent ways of modifying an illegitimate address
  8522. +   to be legitimate.  If we find one, return the new, valid address.
  8523. +   This macro is used in only one place: `memory_address' in explow.c.
  8524. +
  8525. +   OLDX is the address as it was before break_out_memory_refs was called.
  8526. +   In some cases it is useful to look at this to decide what needs to be done.
  8527. +
  8528. +   MODE and WIN are passed so that this macro can use
  8529. +   GO_IF_LEGITIMATE_ADDRESS.
  8530. +
  8531. +   It is always safe for this macro to do nothing.  It exists to recognize
  8532. +   opportunities to optimize the output.
  8533. +
  8534. +   For the 80386, we handle X+REG by loading X into a register R and
  8535. +   using R+REG.  R will go in a general reg and indexing will be used.
  8536. +   However, if REG is a broken-out memory address or multiplication,
  8537. +   nothing needs to be done because REG can certainly go in a general reg.
  8538. +
  8539. +   When -fpic is used, special handling is needed for symbolic references.
  8540. +   See comments by legitimize_pic_address in i386.c for details.  */
  8541. +
  8542. +rtx
  8543. +legitimize_address (x, oldx, mode)
  8544. +     register rtx x;
  8545. +     register rtx oldx;
  8546. +     enum machine_mode mode;
  8547. +{
  8548. +  int changed = 0;
  8549. +  unsigned log;
  8550. +
  8551. +  if (TARGET_DEBUG_ADDR)
  8552. +    {
  8553. +      fprintf (stderr, "\n==========\nLEGITIMIZE_ADDRESS, mode = %s\n", GET_MODE_NAME (mode));
  8554. +      debug_rtx (x);
  8555. +    }
  8556. +
  8557. +  if (flag_pic && SYMBOLIC_CONST (x))
  8558. +    return legitimize_pic_address (x, 0);
  8559. +
  8560. +  /* Canonicalize shifts by 0, 1, 2, 3 into multiply */
  8561. +  if (GET_CODE (x) == ASHIFT
  8562. +      && GET_CODE (XEXP (x, 1)) == CONST_INT
  8563. +      && (log = (unsigned)exact_log2 (INTVAL (XEXP (x, 1)))) < 4)
  8564. +    {
  8565. +      changed = 1;
  8566. +      x = gen_rtx (MULT, Pmode,
  8567. +           force_reg (Pmode, XEXP (x, 0)),
  8568. +           GEN_INT (1 << log));
  8569. +    }
  8570. +
  8571. +  if (GET_CODE (x) == PLUS)
  8572. +    {
  8573. +      /* Canonicalize shifts by 0, 1, 2, 3 into multiply */
  8574. +      if (GET_CODE (XEXP (x, 0)) == ASHIFT
  8575. +      && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT
  8576. +      && (log = (unsigned)exact_log2 (INTVAL (XEXP (XEXP (x, 0), 1)))) < 4)
  8577. +    {
  8578. +      changed = 1;
  8579. +      XEXP (x, 0) = gen_rtx (MULT, Pmode,
  8580. +                 force_reg (Pmode, XEXP (XEXP (x, 0), 0)),
  8581. +                 GEN_INT (1 << log));
  8582. +    }
  8583. +
  8584. +      if (GET_CODE (XEXP (x, 1)) == ASHIFT
  8585. +      && GET_CODE (XEXP (XEXP (x, 1), 1)) == CONST_INT
  8586. +      && (log = (unsigned)exact_log2 (INTVAL (XEXP (XEXP (x, 1), 1)))) < 4)
  8587. +    {
  8588. +      changed = 1;
  8589. +      XEXP (x, 1) = gen_rtx (MULT, Pmode,
  8590. +                 force_reg (Pmode, XEXP (XEXP (x, 1), 0)),
  8591. +                 GEN_INT (1 << log));
  8592. +    }
  8593. +
  8594. +      /* Put multiply first if it isn't already */
  8595. +      if (GET_CODE (XEXP (x, 1)) == MULT)
  8596. +    {
  8597. +      rtx tmp = XEXP (x, 0);
  8598. +      XEXP (x, 0) = XEXP (x, 1);
  8599. +      XEXP (x, 1) = tmp;
  8600. +      changed = 1;
  8601. +    }
  8602. +
  8603. +      /* Canonicalize (plus (mult (reg) (const)) (plus (reg) (const)))
  8604. +     into (plus (plus (mult (reg) (const)) (reg)) (const)).  This can be
  8605. +     created by virtual register instantiation, register elimination, and
  8606. +     similar optimizations.  */
  8607. +      if (GET_CODE (XEXP (x, 0)) == MULT && GET_CODE (XEXP (x, 1)) == PLUS)
  8608. +    {
  8609. +      changed = 1;
  8610. +      x = gen_rtx (PLUS, Pmode,
  8611. +               gen_rtx (PLUS, Pmode, XEXP (x, 0), XEXP (XEXP (x, 1), 0)),
  8612. +               XEXP (XEXP (x, 1), 1));
  8613. +    }
  8614. +
  8615. +      /* Canonicalize (plus (plus (mult (reg) (const)) (plus (reg) (const))) const)
  8616. +     into (plus (plus (mult (reg) (const)) (reg)) (const)).  */
  8617. +      else if (GET_CODE (x) == PLUS && GET_CODE (XEXP (x, 0)) == PLUS
  8618. +           && GET_CODE (XEXP (XEXP (x, 0), 0)) == MULT
  8619. +           && GET_CODE (XEXP (XEXP (x, 0), 1)) == PLUS
  8620. +           && CONSTANT_P (XEXP (x, 1)))
  8621. +    {
  8622. +      rtx constant, other;
  8623. +
  8624. +      if (GET_CODE (XEXP (x, 1)) == CONST_INT)
  8625. +        {
  8626. +          constant = XEXP (x, 1);
  8627. +          other = XEXP (XEXP (XEXP (x, 0), 1), 1);
  8628. +        }
  8629. +      else if (GET_CODE (XEXP (XEXP (XEXP (x, 0), 1), 1)) == CONST_INT)
  8630. +        {
  8631. +          constant = XEXP (XEXP (XEXP (x, 0), 1), 1);
  8632. +          other = XEXP (x, 1);
  8633. +        }
  8634. +      else
  8635. +        constant = 0;
  8636. +
  8637. +      if (constant)
  8638. +        {
  8639. +          changed = 1;
  8640. +          x = gen_rtx (PLUS, Pmode,
  8641. +               gen_rtx (PLUS, Pmode, XEXP (XEXP (x, 0), 0),
  8642. +                    XEXP (XEXP (XEXP (x, 0), 1), 0)),
  8643. +               plus_constant (other, INTVAL (constant)));
  8644. +        }
  8645. +    }
  8646. +
  8647. +      if (changed && legitimate_address_p (mode, x, FALSE))
  8648. +    return x;
  8649. +
  8650. +      if (GET_CODE (XEXP (x, 0)) == MULT)
  8651. +    {
  8652. +      changed = 1;
  8653. +      XEXP (x, 0) = force_operand (XEXP (x, 0), 0);
  8654. +    }
  8655. +
  8656. +      if (GET_CODE (XEXP (x, 1)) == MULT)
  8657. +    {
  8658. +      changed = 1;
  8659. +      XEXP (x, 1) = force_operand (XEXP (x, 1), 0);
  8660. +    }
  8661. +
  8662. +      if (changed
  8663. +      && GET_CODE (XEXP (x, 1)) == REG
  8664. +      && GET_CODE (XEXP (x, 0)) == REG)
  8665. +    return x;
  8666. +
  8667. +      if (flag_pic && SYMBOLIC_CONST (XEXP (x, 1)))
  8668. +    {
  8669. +      changed = 1;
  8670. +      x = legitimize_pic_address (x, 0);
  8671. +    }
  8672. +
  8673. +      if (changed && legitimate_address_p (mode, x, FALSE))
  8674. +    return x;
  8675. +
  8676. +      if (GET_CODE (XEXP (x, 0)) == REG)
  8677. +    {
  8678. +      register rtx temp = gen_reg_rtx (Pmode);
  8679. +      register rtx val  = force_operand (XEXP (x, 1), temp);
  8680. +      if (val != temp)
  8681. +        emit_move_insn (temp, val);
  8682. +
  8683. +      XEXP (x, 1) = temp;
  8684. +      return x;
  8685. +    }
  8686. +
  8687. +      else if (GET_CODE (XEXP (x, 1)) == REG)
  8688. +    {
  8689. +      register rtx temp = gen_reg_rtx (Pmode);
  8690. +      register rtx val  = force_operand (XEXP (x, 0), temp);
  8691. +      if (val != temp)
  8692. +        emit_move_insn (temp, val);
  8693. +
  8694. +      XEXP (x, 0) = temp;
  8695. +      return x;
  8696. +    }
  8697. +    }
  8698. +
  8699. +  return x;
  8700. +}
  8701. +
  8702. +
  8703. +/* Print an integer constant expression in assembler syntax.  Addition
  8704. +   and subtraction are the only arithmetic that may appear in these
  8705. +   expressions.  FILE is the stdio stream to write to, X is the rtx, and
  8706. +   CODE is the operand print code from the output string.  */
  8707. +
  8708. +static void
  8709. +output_pic_addr_const (file, x, code)
  8710. +     FILE *file;
  8711. +     rtx x;
  8712. +     int code;
  8713. +{
  8714. +  char buf[256];
  8715. +
  8716. +  switch (GET_CODE (x))
  8717. +    {
  8718. +    case PC:
  8719. +      if (flag_pic)
  8720. +    putc ('.', file);
  8721. +      else
  8722. +    abort ();
  8723. +      break;
  8724. +
  8725. +    case SYMBOL_REF:
  8726. +    case LABEL_REF:
  8727. +      if (GET_CODE (x) == SYMBOL_REF)
  8728. +    assemble_name (file, XSTR (x, 0));
  8729. +      else
  8730. +    {
  8731. +      ASM_GENERATE_INTERNAL_LABEL (buf, "L",
  8732. +                       CODE_LABEL_NUMBER (XEXP (x, 0)));
  8733. +      assemble_name (asm_out_file, buf);
  8734. +    }
  8735. +
  8736. +      if (GET_CODE (x) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (x))
  8737. +    fprintf (file, "@GOTOFF(%%ebx)");
  8738. +      else if (code == 'P')
  8739. +    fprintf (file, "@PLT");
  8740. +      else if (GET_CODE (x) == LABEL_REF)
  8741. +    fprintf (file, "@GOTOFF");
  8742. +      else if (! SYMBOL_REF_FLAG (x))
  8743. +    fprintf (file, "@GOT");
  8744. +      else
  8745. +    fprintf (file, "@GOTOFF");
  8746. +
  8747. +      break;
  8748. +
  8749. +    case CODE_LABEL:
  8750. +      ASM_GENERATE_INTERNAL_LABEL (buf, "L", CODE_LABEL_NUMBER (x));
  8751. +      assemble_name (asm_out_file, buf);
  8752. +      break;
  8753. +
  8754. +    case CONST_INT:
  8755. +      fprintf (file, "%d", INTVAL (x));
  8756. +      break;
  8757. +
  8758. +    case CONST:
  8759. +      /* This used to output parentheses around the expression,
  8760. +     but that does not work on the 386 (either ATT or BSD assembler).  */
  8761. +      output_pic_addr_const (file, XEXP (x, 0), code);
  8762. +      break;
  8763. +
  8764. +    case CONST_DOUBLE:
  8765. +      if (GET_MODE (x) == VOIDmode)
  8766. +    {
  8767. +      /* We can use %d if the number is <32 bits and positive.  */
  8768. +      if (CONST_DOUBLE_HIGH (x) || CONST_DOUBLE_LOW (x) < 0)
  8769. +        fprintf (file, "0x%x%08x",
  8770. +             CONST_DOUBLE_HIGH (x), CONST_DOUBLE_LOW (x));
  8771. +      else
  8772. +        fprintf (file, "%d", CONST_DOUBLE_LOW (x));
  8773. +    }
  8774. +      else
  8775. +    /* We can't handle floating point constants;
  8776. +       PRINT_OPERAND must handle them.  */
  8777. +    output_operand_lossage ("floating constant misused");
  8778. +      break;
  8779. +
  8780. +    case PLUS:
  8781. +      /* Some assemblers need integer constants to appear last (eg masm).  */
  8782. +      if (GET_CODE (XEXP (x, 0)) == CONST_INT)
  8783. +    {
  8784. +      output_pic_addr_const (file, XEXP (x, 1), code);
  8785. +      if (INTVAL (XEXP (x, 0)) >= 0)
  8786. +        fprintf (file, "+");
  8787. +      output_pic_addr_const (file, XEXP (x, 0), code);
  8788. +    }
  8789. +      else
  8790. +    {
  8791. +      output_pic_addr_const (file, XEXP (x, 0), code);
  8792. +      if (INTVAL (XEXP (x, 1)) >= 0)
  8793. +        fprintf (file, "+");
  8794. +      output_pic_addr_const (file, XEXP (x, 1), code);
  8795. +    }
  8796. +      break;
  8797. +
  8798. +    case MINUS:
  8799. +      output_pic_addr_const (file, XEXP (x, 0), code);
  8800. +      fprintf (file, "-");
  8801. +      output_pic_addr_const (file, XEXP (x, 1), code);
  8802. +      break;
  8803. +
  8804. +    default:
  8805. +      output_operand_lossage ("invalid expression as operand");
  8806. +    }
  8807. +}
  8808. +
  8809. +/* Meaning of CODE:
  8810. +   f -- float insn (print a CONST_DOUBLE as a float rather than in hex).
  8811. +   D,L,W,B,Q,S -- print the opcode suffix for specified size of operand.
  8812. +   R -- print the prefix for register names.
  8813. +   z -- print the opcode suffix for the size of the current operand.
  8814. +   * -- print a star (in certain assembler syntax)
  8815. +   w -- print the operand as if it's a "word" (HImode) even if it isn't.
  8816. +   c -- don't print special prefixes before constant operands.
  8817. +*/
  8818. +
  8819. +void
  8820. +print_operand (file, x, code)
  8821. +     FILE *file;
  8822. +     rtx x;
  8823. +     int code;
  8824. +{
  8825. +  if (code)
  8826. +    {
  8827. +      switch (code)
  8828. +    {
  8829. +    case '*':
  8830. +      if (USE_STAR)
  8831. +        putc ('*', file);
  8832. +      return;
  8833. +
  8834. +    case 'L':
  8835. +      PUT_OP_SIZE (code, 'l', file);
  8836. +      return;
  8837. +
  8838. +    case 'W':
  8839. +      PUT_OP_SIZE (code, 'w', file);
  8840. +      return;
  8841. +
  8842. +    case 'B':
  8843. +      PUT_OP_SIZE (code, 'b', file);
  8844. +      return;
  8845. +
  8846. +    case 'Q':
  8847. +      PUT_OP_SIZE (code, 'l', file);
  8848. +      return;
  8849. +
  8850. +    case 'S':
  8851. +      PUT_OP_SIZE (code, 's', file);
  8852. +      return;
  8853. +
  8854. +    case 'T':
  8855. +      PUT_OP_SIZE (code, 't', file);
  8856. +      return;
  8857. +
  8858. +    case 'z':
  8859. +      /* 387 opcodes don't get size suffixes if the operands are
  8860. +         registers. */
  8861. +
  8862. +      if (STACK_REG_P (x))
  8863. +        return;
  8864. +
  8865. +      /* this is the size of op from size of operand */
  8866. +      switch (GET_MODE_SIZE (GET_MODE (x)))
  8867. +        {
  8868. +        case 1:
  8869. +          PUT_OP_SIZE ('B', 'b', file);
  8870. +          return;
  8871. +
  8872. +        case 2:
  8873. +          PUT_OP_SIZE ('W', 'w', file);
  8874. +          return;
  8875. +
  8876. +        case 4:
  8877. +          if (GET_MODE (x) == SFmode)
  8878. +        {
  8879. +          PUT_OP_SIZE ('S', 's', file);
  8880. +          return;
  8881. +        }
  8882. +          else
  8883. +        PUT_OP_SIZE ('L', 'l', file);
  8884. +          return;
  8885. +
  8886. +        case 12:
  8887. +          PUT_OP_SIZE ('T', 't', file);
  8888. +          return;
  8889. +
  8890. +        case 8:
  8891. +          if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT)
  8892. +        {
  8893. +#ifdef GAS_MNEMONICS
  8894. +          PUT_OP_SIZE ('Q', 'q', file);
  8895. +          return;
  8896. +#else
  8897. +          PUT_OP_SIZE ('Q', 'l', file);    /* Fall through */
  8898. +#endif
  8899. +        }
  8900. +
  8901. +          PUT_OP_SIZE ('Q', 'l', file);
  8902. +          return;
  8903. +        }
  8904. +
  8905. +    case 'b':
  8906. +    case 'w':
  8907. +    case 'k':
  8908. +    case 'h':
  8909. +    case 'y':
  8910. +    case 'P':
  8911. +      break;
  8912. +
  8913. +    default:
  8914. +      {
  8915. +        char str[50];
  8916. +
  8917. +        sprintf (str, "invalid operand code `%c'", code);
  8918. +        output_operand_lossage (str);
  8919. +      }
  8920. +    }
  8921. +    }
  8922. +  if (GET_CODE (x) == REG)
  8923. +    {
  8924. +      PRINT_REG (x, code, file);
  8925. +    }
  8926. +  else if (GET_CODE (x) == MEM)
  8927. +    {
  8928. +      PRINT_PTR (x, file);
  8929. +      if (CONSTANT_ADDRESS_P (XEXP (x, 0)))
  8930. +    {
  8931. +      if (flag_pic)
  8932. +        output_pic_addr_const (file, XEXP (x, 0), code);
  8933. +      else
  8934. +        output_addr_const (file, XEXP (x, 0));
  8935. +    }
  8936. +      else
  8937. +    output_address (XEXP (x, 0));
  8938. +    }
  8939. +  else if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) == SFmode)
  8940. +    {
  8941. +      REAL_VALUE_TYPE r; long l;
  8942. +      REAL_VALUE_FROM_CONST_DOUBLE (r, x);
  8943. +      REAL_VALUE_TO_TARGET_SINGLE (r, l);
  8944. +      PRINT_IMMED_PREFIX (file);
  8945. +      fprintf (file, "0x%x", l);
  8946. +    }
  8947. + /* These float cases don't actually occur as immediate operands. */
  8948. + else if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) == DFmode)
  8949. +    {
  8950. +      REAL_VALUE_TYPE r; char dstr[30];
  8951. +      REAL_VALUE_FROM_CONST_DOUBLE (r, x);
  8952. +      REAL_VALUE_TO_DECIMAL (r, "%.22e", dstr);
  8953. +      fprintf (file, "%s", dstr);
  8954. +    }
  8955. +  else if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) == XFmode)
  8956. +    {
  8957. +      REAL_VALUE_TYPE r; char dstr[30];
  8958. +      REAL_VALUE_FROM_CONST_DOUBLE (r, x);
  8959. +      REAL_VALUE_TO_DECIMAL (r, "%.22e", dstr);
  8960. +      fprintf (file, "%s", dstr);
  8961. +    }
  8962. +  else 
  8963. +    {
  8964. +      if (code != 'P')
  8965. +    {
  8966. +      if (GET_CODE (x) == CONST_INT || GET_CODE (x) == CONST_DOUBLE)
  8967. +        PRINT_IMMED_PREFIX (file);
  8968. +      else if (GET_CODE (x) == CONST || GET_CODE (x) == SYMBOL_REF
  8969. +           || GET_CODE (x) == LABEL_REF)
  8970. +        PRINT_OFFSET_PREFIX (file);
  8971. +    }
  8972. +      if (flag_pic)
  8973. +    output_pic_addr_const (file, x, code);
  8974. +      else
  8975. +    output_addr_const (file, x);
  8976. +    }
  8977. +}
  8978. +
  8979. +/* Print a memory operand whose address is ADDR.  */
  8980. +
  8981. +void
  8982. +print_operand_address (file, addr)
  8983. +     FILE *file;
  8984. +     register rtx addr;
  8985. +{
  8986. +  register rtx reg1, reg2, breg, ireg;
  8987. +  rtx offset;
  8988. +
  8989. +  switch (GET_CODE (addr))
  8990. +    {
  8991. +    case REG:
  8992. +      ADDR_BEG (file);
  8993. +      fprintf (file, "%se", RP);
  8994. +      fputs (hi_reg_name[REGNO (addr)], file);
  8995. +      ADDR_END (file);
  8996. +      break;
  8997. +
  8998. +    case PLUS:
  8999. +      reg1 = 0;
  9000. +      reg2 = 0;
  9001. +      ireg = 0;
  9002. +      breg = 0;
  9003. +      offset = 0;
  9004. +      if (CONSTANT_ADDRESS_P (XEXP (addr, 0)))
  9005. +    {
  9006. +      offset = XEXP (addr, 0);
  9007. +      addr = XEXP (addr, 1);
  9008. +    }
  9009. +      else if (CONSTANT_ADDRESS_P (XEXP (addr, 1)))
  9010. +    {
  9011. +      offset = XEXP (addr, 1);
  9012. +      addr = XEXP (addr, 0);
  9013. +    }
  9014. +      if (GET_CODE (addr) != PLUS) ;
  9015. +      else if (GET_CODE (XEXP (addr, 0)) == MULT)
  9016. +    {
  9017. +      reg1 = XEXP (addr, 0);
  9018. +      addr = XEXP (addr, 1);
  9019. +    }
  9020. +      else if (GET_CODE (XEXP (addr, 1)) == MULT)
  9021. +    {
  9022. +      reg1 = XEXP (addr, 1);
  9023. +      addr = XEXP (addr, 0);
  9024. +    }
  9025. +      else if (GET_CODE (XEXP (addr, 0)) == REG)
  9026. +    {
  9027. +      reg1 = XEXP (addr, 0);
  9028. +      addr = XEXP (addr, 1);
  9029. +    }
  9030. +      else if (GET_CODE (XEXP (addr, 1)) == REG)
  9031. +    {
  9032. +      reg1 = XEXP (addr, 1);
  9033. +      addr = XEXP (addr, 0);
  9034. +    }
  9035. +      if (GET_CODE (addr) == REG || GET_CODE (addr) == MULT)
  9036. +    {
  9037. +      if (reg1 == 0) reg1 = addr;
  9038. +      else reg2 = addr;
  9039. +      addr = 0;
  9040. +    }
  9041. +      if (offset != 0)
  9042. +    {
  9043. +      if (addr != 0) abort ();
  9044. +      addr = offset;
  9045. +    }
  9046. +      if ((reg1 && GET_CODE (reg1) == MULT)
  9047. +      || (reg2 != 0 && REGNO_OK_FOR_BASE_P (REGNO (reg2))))
  9048. +    {
  9049. +      breg = reg2;
  9050. +      ireg = reg1;
  9051. +    }
  9052. +      else if (reg1 != 0 && REGNO_OK_FOR_BASE_P (REGNO (reg1)))
  9053. +    {
  9054. +      breg = reg1;
  9055. +      ireg = reg2;
  9056. +    }
  9057. +
  9058. +      if (ireg != 0 || breg != 0)
  9059. +    {
  9060. +      int scale = 1;
  9061. +
  9062. +      if (addr != 0)
  9063. +        {
  9064. +          if (flag_pic)
  9065. +        output_pic_addr_const (file, addr, 0);
  9066. +
  9067. +          else if (GET_CODE (addr) == LABEL_REF)
  9068. +        output_asm_label (addr);
  9069. +
  9070. +          else
  9071. +        output_addr_const (file, addr);
  9072. +        }
  9073. +
  9074. +        if (ireg != 0 && GET_CODE (ireg) == MULT)
  9075. +        {
  9076. +          scale = INTVAL (XEXP (ireg, 1));
  9077. +          ireg = XEXP (ireg, 0);
  9078. +        }
  9079. +
  9080. +      /* The stack pointer can only appear as a base register,
  9081. +         never an index register, so exchange the regs if it is wrong. */
  9082. +
  9083. +      if (scale == 1 && ireg && REGNO (ireg) == STACK_POINTER_REGNUM)
  9084. +        {
  9085. +          rtx tmp;
  9086. +
  9087. +          tmp = breg;
  9088. +          breg = ireg;
  9089. +          ireg = tmp;
  9090. +        }
  9091. +
  9092. +      /* output breg+ireg*scale */
  9093. +      PRINT_B_I_S (breg, ireg, scale, file);
  9094. +      break;
  9095. +    }
  9096. +
  9097. +    case MULT:
  9098. +      {
  9099. +    int scale;
  9100. +    if (GET_CODE (XEXP (addr, 0)) == CONST_INT)
  9101. +      {
  9102. +        scale = INTVAL (XEXP (addr, 0));
  9103. +        ireg = XEXP (addr, 1);
  9104. +      }
  9105. +    else
  9106. +      {
  9107. +        scale = INTVAL (XEXP (addr, 1));
  9108. +        ireg = XEXP (addr, 0);
  9109. +      }
  9110. +    output_addr_const (file, const0_rtx);
  9111. +    PRINT_B_I_S ((rtx) 0, ireg, scale, file);
  9112. +      }
  9113. +      break;
  9114. +
  9115. +    default:
  9116. +      if (GET_CODE (addr) == CONST_INT
  9117. +      && INTVAL (addr) < 0x8000
  9118. +      && INTVAL (addr) >= -0x8000)
  9119. +    fprintf (file, "%d", INTVAL (addr));
  9120. +      else
  9121. +    {
  9122. +      if (flag_pic)
  9123. +        output_pic_addr_const (file, addr, 0);
  9124. +      else
  9125. +        output_addr_const (file, addr);
  9126. +    }
  9127. +    }
  9128. +}
  9129. +
  9130. +/* Set the cc_status for the results of an insn whose pattern is EXP.
  9131. +   On the 80386, we assume that only test and compare insns, as well
  9132. +   as SI, HI, & DI mode ADD, SUB, NEG, AND, IOR, XOR, ASHIFT,
  9133. +   ASHIFTRT, and LSHIFTRT instructions set the condition codes usefully.
  9134. +   Also, we assume that jumps, moves and sCOND don't affect the condition
  9135. +   codes.  All else clobbers the condition codes, by assumption.
  9136. +
  9137. +   We assume that ALL integer add, minus, etc. instructions effect the
  9138. +   condition codes.  This MUST be consistent with i386.md.
  9139. +
  9140. +   We don't record any float test or compare - the redundant test &
  9141. +   compare check in final.c does not handle stack-like regs correctly. */
  9142. +
  9143. +void
  9144. +notice_update_cc (exp)
  9145. +     rtx exp;
  9146. +{
  9147. +  if (GET_CODE (exp) == SET)
  9148. +    {
  9149. +      /* Jumps do not alter the cc's.  */
  9150. +      if (SET_DEST (exp) == pc_rtx)
  9151. +    return;
  9152. +#ifdef IS_STACK_MODE
  9153. +      /* intel1 
  9154. +         Moving into a memory of stack_mode may have been moved
  9155. +         in between the use and set of cc0 by loop_spl(). So
  9156. +         old value of cc.status must be retained */
  9157. +      if(GET_CODE(SET_DEST(exp))==MEM 
  9158. +         && IS_STACK_MODE(GET_MODE(SET_DEST(exp))))
  9159. +        {
  9160. +          return;
  9161. +        }
  9162. +#endif
  9163. +      /* Moving register or memory into a register:
  9164. +     it doesn't alter the cc's, but it might invalidate
  9165. +     the RTX's which we remember the cc's came from.
  9166. +     (Note that moving a constant 0 or 1 MAY set the cc's).  */
  9167. +      if (REG_P (SET_DEST (exp))
  9168. +      && (REG_P (SET_SRC (exp)) || GET_CODE (SET_SRC (exp)) == MEM
  9169. +          || GET_RTX_CLASS (GET_CODE (SET_SRC (exp))) == '<'))
  9170. +    {
  9171. +      if (cc_status.value1
  9172. +          && reg_overlap_mentioned_p (SET_DEST (exp), cc_status.value1))
  9173. +        cc_status.value1 = 0;
  9174. +      if (cc_status.value2
  9175. +          && reg_overlap_mentioned_p (SET_DEST (exp), cc_status.value2))
  9176. +        cc_status.value2 = 0;
  9177. +      return;
  9178. +    }
  9179. +      /* Moving register into memory doesn't alter the cc's.
  9180. +     It may invalidate the RTX's which we remember the cc's came from.  */
  9181. +      if (GET_CODE (SET_DEST (exp)) == MEM
  9182. +      && (REG_P (SET_SRC (exp))
  9183. +          || GET_RTX_CLASS (GET_CODE (SET_SRC (exp))) == '<'))
  9184. +    {
  9185. +      if (cc_status.value1 && GET_CODE (cc_status.value1) == MEM)
  9186. +        cc_status.value1 = 0;
  9187. +      if (cc_status.value2 && GET_CODE (cc_status.value2) == MEM)
  9188. +        cc_status.value2 = 0;
  9189. +      return;
  9190. +    }
  9191. +      /* Function calls clobber the cc's.  */
  9192. +      else if (GET_CODE (SET_SRC (exp)) == CALL)
  9193. +    {
  9194. +      CC_STATUS_INIT;
  9195. +      return;
  9196. +    }
  9197. +      /* Tests and compares set the cc's in predictable ways.  */
  9198. +      else if (SET_DEST (exp) == cc0_rtx)
  9199. +    {
  9200. +      CC_STATUS_INIT;
  9201. +      cc_status.value1 = SET_SRC (exp);
  9202. +      return;
  9203. +    }
  9204. +      /* Certain instructions effect the condition codes. */
  9205. +      else if (GET_MODE (SET_SRC (exp)) == SImode
  9206. +           || GET_MODE (SET_SRC (exp)) == HImode
  9207. +           || GET_MODE (SET_SRC (exp)) == QImode)
  9208. +    switch (GET_CODE (SET_SRC (exp)))
  9209. +      {
  9210. +      case ASHIFTRT: case LSHIFTRT:
  9211. +      case ASHIFT:
  9212. +        /* Shifts on the 386 don't set the condition codes if the
  9213. +           shift count is zero. */
  9214. +        if (GET_CODE (XEXP (SET_SRC (exp), 1)) != CONST_INT)
  9215. +          {
  9216. +        CC_STATUS_INIT;
  9217. +        break;
  9218. +          }
  9219. +        /* We assume that the CONST_INT is non-zero (this rtx would
  9220. +           have been deleted if it were zero. */
  9221. +
  9222. +      case PLUS: case MINUS: case NEG:
  9223. +      case AND: case IOR: case XOR:
  9224. +        cc_status.flags = CC_NO_OVERFLOW;
  9225. +        cc_status.value1 = SET_SRC (exp);
  9226. +        cc_status.value2 = SET_DEST (exp);
  9227. +        break;
  9228. +
  9229. +      default:
  9230. +        CC_STATUS_INIT;
  9231. +      }
  9232. +      else
  9233. +    {
  9234. +      CC_STATUS_INIT;
  9235. +    }
  9236. +    }
  9237. +  else if (GET_CODE (exp) == PARALLEL
  9238. +       && GET_CODE (XVECEXP (exp, 0, 0)) == SET)
  9239. +    {
  9240. +      if (SET_DEST (XVECEXP (exp, 0, 0)) == pc_rtx)
  9241. +    return;
  9242. +      if (SET_DEST (XVECEXP (exp, 0, 0)) == cc0_rtx)
  9243. +    {
  9244. +      CC_STATUS_INIT;
  9245. +      if (stack_regs_mentioned_p (SET_SRC (XVECEXP (exp, 0, 0))))
  9246. +        cc_status.flags |= CC_IN_80387;
  9247. +      else
  9248. +        cc_status.value1 = SET_SRC (XVECEXP (exp, 0, 0));
  9249. +      return;
  9250. +    }
  9251. +      CC_STATUS_INIT;
  9252. +    }
  9253. +  else
  9254. +    {
  9255. +      CC_STATUS_INIT;
  9256. +    }
  9257. +}
  9258. +
  9259. +/* Split one or more DImode RTL references into pairs of SImode
  9260. +   references.  The RTL can be REG, offsettable MEM, integer constant, or
  9261. +   CONST_DOUBLE.  "operands" is a pointer to an array of DImode RTL to
  9262. +   split and "num" is its length.  lo_half and hi_half are output arrays
  9263. +   that parallel "operands". */
  9264. +
  9265. +void
  9266. +split_di (operands, num, lo_half, hi_half)
  9267. +     rtx operands[];
  9268. +     int num;
  9269. +     rtx lo_half[], hi_half[];
  9270. +{
  9271. +  while (num--)
  9272. +    {
  9273. +      if (GET_CODE (operands[num]) == REG)
  9274. +    {
  9275. +      lo_half[num] = gen_rtx (REG, SImode, REGNO (operands[num]));
  9276. +      hi_half[num] = gen_rtx (REG, SImode, REGNO (operands[num]) + 1);
  9277. +    }
  9278. +      else if (CONSTANT_P (operands[num]))
  9279. +    {
  9280. +      split_double (operands[num], &lo_half[num], &hi_half[num]);
  9281. +    }
  9282. +      else if (offsettable_memref_p (operands[num]))
  9283. +    {
  9284. +      lo_half[num] = operands[num];
  9285. +      hi_half[num] = adj_offsettable_operand (operands[num], 4);
  9286. +    }
  9287. +      else
  9288. +    abort();
  9289. +    }
  9290. +}
  9291. +
  9292. +/* Return 1 if this is a valid binary operation on a 387.
  9293. +   OP is the expression matched, and MODE is its mode. */
  9294. +
  9295. +int
  9296. +binary_387_op (op, mode)
  9297. +    register rtx op;
  9298. +    enum machine_mode mode;
  9299. +{
  9300. +  if (mode != VOIDmode && mode != GET_MODE (op))
  9301. +    return 0;
  9302. +
  9303. +  switch (GET_CODE (op))
  9304. +    {
  9305. +    case PLUS:
  9306. +    case MINUS:
  9307. +    case MULT:
  9308. +    case DIV:
  9309. +      return GET_MODE_CLASS (GET_MODE (op)) == MODE_FLOAT;
  9310. +
  9311. +    default:
  9312. +      return 0;
  9313. +    }
  9314. +}
  9315. +
  9316. +
  9317. +/* Return 1 if this is a valid shift or rotate operation on a 386.
  9318. +   OP is the expression matched, and MODE is its mode. */
  9319. +
  9320. +int
  9321. +shift_op (op, mode)
  9322. +    register rtx op;
  9323. +    enum machine_mode mode;
  9324. +{
  9325. +  rtx operand = XEXP (op, 0);
  9326. +
  9327. +  if (mode != VOIDmode && mode != GET_MODE (op))
  9328. +    return 0;
  9329. +
  9330. +  if (GET_MODE (operand) != GET_MODE (op)
  9331. +      || GET_MODE_CLASS (GET_MODE (op)) != MODE_INT)
  9332. +    return 0;
  9333. +
  9334. +  return (GET_CODE (op) == ASHIFT
  9335. +      || GET_CODE (op) == ASHIFTRT
  9336. +      || GET_CODE (op) == LSHIFTRT
  9337. +      || GET_CODE (op) == ROTATE
  9338. +      || GET_CODE (op) == ROTATERT);
  9339. +}
  9340. +
  9341. +/* Return 1 if OP is COMPARE rtx with mode VOIDmode.
  9342. +   MODE is not used.  */
  9343. +
  9344. +int
  9345. +VOIDmode_compare_op (op, mode)
  9346. +    register rtx op;
  9347. +    enum machine_mode mode;
  9348. +{
  9349. +  return GET_CODE (op) == COMPARE && GET_MODE (op) == VOIDmode;
  9350. +}
  9351. +
  9352. +/* Output code to perform a 387 binary operation in INSN, one of PLUS,
  9353. +   MINUS, MULT or DIV.  OPERANDS are the insn operands, where operands[3]
  9354. +   is the expression of the binary operation.  The output may either be
  9355. +   emitted here, or returned to the caller, like all output_* functions.
  9356. +
  9357. +   There is no guarantee that the operands are the same mode, as they
  9358. +   might be within FLOAT or FLOAT_EXTEND expressions. */
  9359. +
  9360. +char *
  9361. +output_387_binary_op (insn, operands)
  9362. +     rtx insn;
  9363. +     rtx *operands;
  9364. +{
  9365. +  rtx temp;
  9366. +  char *base_op;
  9367. +  static char buf[100];
  9368. +
  9369. +  switch (GET_CODE (operands[3]))
  9370. +    {
  9371. +    case PLUS:
  9372. +      if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_INT
  9373. +      || GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT)
  9374. +    base_op = "fiadd";
  9375. +      else
  9376. +    base_op = "fadd";
  9377. +      break;
  9378. +
  9379. +    case MINUS:
  9380. +      if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_INT
  9381. +      || GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT)
  9382. +    base_op = "fisub";
  9383. +      else
  9384. +    base_op = "fsub";
  9385. +      break;
  9386. +
  9387. +    case MULT:
  9388. +      if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_INT
  9389. +      || GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT)
  9390. +    base_op = "fimul";
  9391. +      else
  9392. +    base_op = "fmul";
  9393. +      break;
  9394. +
  9395. +    case DIV:
  9396. +      if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_INT
  9397. +      || GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT)
  9398. +    base_op = "fidiv";
  9399. +      else
  9400. +    base_op = "fdiv";
  9401. +      break;
  9402. +
  9403. +    default:
  9404. +      abort ();
  9405. +    }
  9406. +
  9407. +  strcpy (buf, base_op);
  9408. +
  9409. +  switch (GET_CODE (operands[3]))
  9410. +    {
  9411. +    case MULT:
  9412. +    case PLUS:
  9413. +      if (REG_P (operands[2]) && REGNO (operands[0]) == REGNO (operands[2]))
  9414. +    {
  9415. +      temp = operands[2];
  9416. +      operands[2] = operands[1];
  9417. +      operands[1] = temp;
  9418. +    }
  9419. +
  9420. +      if (GET_CODE (operands[2]) == MEM)
  9421. +    return strcat (buf, AS1 (%z2,%2));
  9422. +
  9423. +      if (NON_STACK_REG_P (operands[1]))
  9424. +    {
  9425. +      output_op_from_reg (operands[1], strcat (buf, AS1 (%z0,%1)));
  9426. +      RET;
  9427. +    }
  9428. +      else if (NON_STACK_REG_P (operands[2]))
  9429. +    {
  9430. +      output_op_from_reg (operands[2], strcat (buf, AS1 (%z0,%1)));
  9431. +      RET;
  9432. +    }
  9433. +
  9434. +      if (find_regno_note (insn, REG_DEAD, REGNO (operands[2])))
  9435. +    return strcat (buf, AS2 (p,%2,%0));
  9436. +
  9437. +      if (STACK_TOP_P (operands[0]))
  9438. +    return strcat (buf, AS2C (%y2,%0));
  9439. +      else
  9440. +    return strcat (buf, AS2C (%2,%0));
  9441. +
  9442. +    case MINUS:
  9443. +    case DIV:
  9444. +      if (GET_CODE (operands[1]) == MEM)
  9445. +    return strcat (buf, AS1 (r%z1,%1));
  9446. +
  9447. +      if (GET_CODE (operands[2]) == MEM)
  9448. +    return strcat (buf, AS1 (%z2,%2));
  9449. +
  9450. +      if (NON_STACK_REG_P (operands[1]))
  9451. +    {
  9452. +      output_op_from_reg (operands[1], strcat (buf, AS1 (r%z0,%1)));
  9453. +      RET;
  9454. +    }
  9455. +      else if (NON_STACK_REG_P (operands[2]))
  9456. +    {
  9457. +      output_op_from_reg (operands[2], strcat (buf, AS1 (%z0,%1)));
  9458. +      RET;
  9459. +    }
  9460. +
  9461. +      if (! STACK_REG_P (operands[1]) || ! STACK_REG_P (operands[2]))
  9462. +    abort ();
  9463. +
  9464. +      if (find_regno_note (insn, REG_DEAD, REGNO (operands[2])))
  9465. +    return strcat (buf, AS2 (rp,%2,%0));
  9466. +
  9467. +      if (find_regno_note (insn, REG_DEAD, REGNO (operands[1])))
  9468. +    return strcat (buf, AS2 (p,%1,%0));
  9469. +
  9470. +      if (STACK_TOP_P (operands[0]))
  9471. +    {
  9472. +      if (STACK_TOP_P (operands[1]))
  9473. +        return strcat (buf, AS2C (%y2,%0));
  9474. +      else
  9475. +        return strcat (buf, AS2 (r,%y1,%0));
  9476. +    }
  9477. +      else if (STACK_TOP_P (operands[1]))
  9478. +    return strcat (buf, AS2C (%1,%0));
  9479. +      else
  9480. +    return strcat (buf, AS2 (r,%2,%0));
  9481. +
  9482. +    default:
  9483. +      abort ();
  9484. +    }
  9485. +}
  9486. +
  9487. +/* Output code for INSN to convert a float to a signed int.  OPERANDS
  9488. +   are the insn operands.  The output may be SFmode or DFmode and the
  9489. +   input operand may be SImode or DImode.  As a special case, make sure
  9490. +   that the 387 stack top dies if the output mode is DImode, because the
  9491. +   hardware requires this.  */
  9492. +
  9493. +char *
  9494. +output_fix_trunc (insn, operands)
  9495. +     rtx insn;
  9496. +     rtx *operands;
  9497. +{
  9498. +  int stack_top_dies = find_regno_note (insn, REG_DEAD, FIRST_STACK_REG) != 0;
  9499. +  rtx xops[2];
  9500. +
  9501. +  if (! STACK_TOP_P (operands[1]) ||
  9502. +      (GET_MODE (operands[0]) == DImode && ! stack_top_dies))
  9503. +    abort ();
  9504. +
  9505. +  xops[0] = GEN_INT (12);
  9506. +  xops[1] = operands[4];
  9507. +
  9508. +  output_asm_insn (AS1 (fnstc%W2,%2), operands);
  9509. +  output_asm_insn (AS2 (mov%L2,%2,%4), operands);
  9510. +  output_asm_insn (AS2 (mov%B1,%0,%h1), xops);
  9511. +  output_asm_insn (AS2 (mov%L4,%4,%3), operands);
  9512. +  output_asm_insn (AS1 (fldc%W3,%3), operands);
  9513. +
  9514. +  if (NON_STACK_REG_P (operands[0]))
  9515. +    output_to_reg (operands[0], stack_top_dies);
  9516. +  else if (GET_CODE (operands[0]) == MEM)
  9517. +    {
  9518. +      if (stack_top_dies)
  9519. +    output_asm_insn (AS1 (fistp%z0,%0), operands);
  9520. +      else
  9521. +    output_asm_insn (AS1 (fist%z0,%0), operands);
  9522. +    }
  9523. +  else
  9524. +    abort ();
  9525. +
  9526. +  return AS1 (fldc%W2,%2);
  9527. +}
  9528. +
  9529. +/* Output code for INSN to compare OPERANDS.  The two operands might
  9530. +   not have the same mode: one might be within a FLOAT or FLOAT_EXTEND
  9531. +   expression.  If the compare is in mode CCFPEQmode, use an opcode that
  9532. +   will not fault if a qNaN is present. */
  9533. +
  9534. +char *
  9535. +output_float_compare (insn, operands)
  9536. +     rtx insn;
  9537. +     rtx *operands;
  9538. +{
  9539. +  int stack_top_dies;
  9540. +  rtx body = XVECEXP (PATTERN (insn), 0, 0);
  9541. +  int unordered_compare = GET_MODE (SET_SRC (body)) == CCFPEQmode;
  9542. +
  9543. +  /* intel1 */
  9544. +  rtx tmp;
  9545. +  if (! STACK_TOP_P (operands[0]))
  9546. +    {
  9547. +      tmp = operands[0];
  9548. +      operands[0] = operands[1];
  9549. +      operands[1] = tmp;
  9550. +      cc_status.flags |= CC_REVERSED;
  9551. +    }
  9552. +    
  9553. +  if (! STACK_TOP_P (operands[0]))
  9554. +    abort ();
  9555. +
  9556. +  stack_top_dies = find_regno_note (insn, REG_DEAD, FIRST_STACK_REG) != 0;
  9557. +
  9558. +  if (STACK_REG_P (operands[1])
  9559. +      && stack_top_dies
  9560. +      && find_regno_note (insn, REG_DEAD, REGNO (operands[1]))
  9561. +      && REGNO (operands[1]) != FIRST_STACK_REG)
  9562. +    {
  9563. +      /* If both the top of the 387 stack dies, and the other operand
  9564. +     is also a stack register that dies, then this must be a
  9565. +     `fcompp' float compare */
  9566. +
  9567. +      if (unordered_compare)
  9568. +    output_asm_insn ("fucompp", operands);
  9569. +      else
  9570. +    output_asm_insn ("fcompp", operands);
  9571. +    }
  9572. +  else
  9573. +    {
  9574. +      static char buf[100];
  9575. +
  9576. +      /* Decide if this is the integer or float compare opcode, or the
  9577. +     unordered float compare. */
  9578. +
  9579. +      if (unordered_compare)
  9580. +    strcpy (buf, "fucom");
  9581. +      else if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_FLOAT)
  9582. +    strcpy (buf, "fcom");
  9583. +      else
  9584. +    strcpy (buf, "ficom");
  9585. +
  9586. +      /* Modify the opcode if the 387 stack is to be popped. */
  9587. +
  9588. +      if (stack_top_dies)
  9589. +    strcat (buf, "p");
  9590. +
  9591. +      if (NON_STACK_REG_P (operands[1]))
  9592. +    output_op_from_reg (operands[1], strcat (buf, AS1 (%z0,%1)));
  9593. +      else
  9594. +        output_asm_insn (strcat (buf, AS1 (%z1,%y1)), operands);
  9595. +    }
  9596. +
  9597. +  /* Now retrieve the condition code. */
  9598. +
  9599. +  return output_fp_cc0_set (insn);
  9600. +}
  9601. +
  9602. +/* Output opcodes to transfer the results of FP compare or test INSN
  9603. +   from the FPU to the CPU flags.  If TARGET_IEEE_FP, ensure that if the
  9604. +   result of the compare or test is unordered, no comparison operator
  9605. +   succeeds except NE.  Return an output template, if any.  */
  9606. +
  9607. +char *
  9608. +output_fp_cc0_set (insn)
  9609. +     rtx insn;
  9610. +{
  9611. +  rtx xops[3];
  9612. +  rtx unordered_label;
  9613. +  rtx next;
  9614. +  enum rtx_code code;
  9615. +
  9616. +  xops[0] = gen_rtx (REG, HImode, 0);
  9617. +  output_asm_insn (AS1 (fnsts%W0,%0), xops);
  9618. +
  9619. +
  9620. +  if (! TARGET_IEEE_FP)
  9621. +    {
  9622. +      /* intel1 */
  9623. +      if (!(cc_status.flags & CC_REVERSED))
  9624. +        {
  9625. +          next = next_cc0_user (insn);
  9626. +        
  9627. +          if (GET_CODE (next) == JUMP_INSN
  9628. +              && GET_CODE (PATTERN (next)) == SET
  9629. +              && SET_DEST (PATTERN (next)) == pc_rtx
  9630. +              && GET_CODE (SET_SRC (PATTERN (next))) == IF_THEN_ELSE)
  9631. +            {
  9632. +              code = GET_CODE (XEXP (SET_SRC (PATTERN (next)), 0));
  9633. +            }
  9634. +          else if (GET_CODE (PATTERN (next)) == SET)
  9635. +            {
  9636. +              code = GET_CODE (SET_SRC (PATTERN (next)));
  9637. +            }
  9638. +          else
  9639. +            {
  9640. +              return "sahf";
  9641. +            }
  9642. +          if (code == GT || code == LT || code == EQ || code == NE
  9643. +              || code == LE || code == GE)
  9644. +            { /* We will test eax directly */
  9645. +              cc_status.flags |= CC_TEST_AX;
  9646. +              RET;
  9647. +            }
  9648. +        }
  9649. +      return "sahf";
  9650. +    }
  9651. +
  9652. +  next = next_cc0_user (insn);
  9653. +  if (next == NULL_RTX)
  9654. +    abort ();
  9655. +
  9656. +  if (GET_CODE (next) == JUMP_INSN
  9657. +      && GET_CODE (PATTERN (next)) == SET
  9658. +      && SET_DEST (PATTERN (next)) == pc_rtx
  9659. +      && GET_CODE (SET_SRC (PATTERN (next))) == IF_THEN_ELSE)
  9660. +    {
  9661. +      code = GET_CODE (XEXP (SET_SRC (PATTERN (next)), 0));
  9662. +    }
  9663. +  else if (GET_CODE (PATTERN (next)) == SET)
  9664. +    {
  9665. +      code = GET_CODE (SET_SRC (PATTERN (next)));
  9666. +    }
  9667. +  else
  9668. +    abort ();
  9669. +
  9670. +  xops[0] = gen_rtx (REG, QImode, 0);
  9671. +
  9672. +  switch (code)
  9673. +    {
  9674. +    case GT:
  9675. +      xops[1] = GEN_INT (0x45);
  9676. +      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  9677. +      /* je label */
  9678. +      break;
  9679. +
  9680. +    case LT:
  9681. +      xops[1] = GEN_INT (0x45);
  9682. +      xops[2] = GEN_INT (0x01);
  9683. +      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  9684. +      output_asm_insn (AS2 (cmp%B0,%2,%h0), xops);
  9685. +      /* je label */
  9686. +      break;
  9687. +
  9688. +    case GE:
  9689. +      xops[1] = GEN_INT (0x05);
  9690. +      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  9691. +      /* je label */
  9692. +      break;
  9693. +
  9694. +    case LE:
  9695. +      xops[1] = GEN_INT (0x45);
  9696. +      xops[2] = GEN_INT (0x40);
  9697. +      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  9698. +      output_asm_insn (AS1 (dec%B0,%h0), xops);
  9699. +      output_asm_insn (AS2 (cmp%B0,%2,%h0), xops);
  9700. +      /* jb label */
  9701. +      break;
  9702. +
  9703. +    case EQ:
  9704. +      xops[1] = GEN_INT (0x45);
  9705. +      xops[2] = GEN_INT (0x40);
  9706. +      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  9707. +      output_asm_insn (AS2 (cmp%B0,%2,%h0), xops);
  9708. +      /* je label */
  9709. +      break;
  9710. +
  9711. +    case NE:
  9712. +      xops[1] = GEN_INT (0x44);
  9713. +      xops[2] = GEN_INT (0x40);
  9714. +      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
  9715. +      output_asm_insn (AS2 (xor%B0,%2,%h0), xops);
  9716. +      /* jne label */
  9717. +      break;
  9718. +
  9719. +    case GTU:
  9720. +    case LTU:
  9721. +    case GEU:
  9722. +    case LEU:
  9723. +    default:
  9724. +      abort ();
  9725. +    }
  9726. +  RET;
  9727. +}
  9728. +
  9729. +#define MAX_386_STACK_LOCALS 2
  9730. +
  9731. +static rtx i386_stack_locals[(int) MAX_MACHINE_MODE][MAX_386_STACK_LOCALS];
  9732. +
  9733. +/* Define the structure for the machine field in struct function.  */
  9734. +struct machine_function
  9735. +{
  9736. +  rtx i386_stack_locals[(int) MAX_MACHINE_MODE][MAX_386_STACK_LOCALS];
  9737. +};
  9738. +
  9739. +/* Functions to save and restore i386_stack_locals.
  9740. +   These will be called, via pointer variables,
  9741. +   from push_function_context and pop_function_context.  */
  9742. +
  9743. +void
  9744. +save_386_machine_status (p)
  9745. +     struct function *p;
  9746. +{
  9747. +  p->machine = (struct machine_function *) xmalloc (sizeof i386_stack_locals);
  9748. +  bcopy ((char *) i386_stack_locals, (char *) p->machine->i386_stack_locals,
  9749. +     sizeof i386_stack_locals);
  9750. +}
  9751. +
  9752. +void
  9753. +restore_386_machine_status (p)
  9754. +     struct function *p;
  9755. +{
  9756. +  bcopy ((char *) p->machine->i386_stack_locals, (char *) i386_stack_locals,
  9757. +     sizeof i386_stack_locals);
  9758. +  free (p->machine);
  9759. +}
  9760. +
  9761. +/* Clear stack slot assignments remembered from previous functions.
  9762. +   This is called from INIT_EXPANDERS once before RTL is emitted for each
  9763. +   function.  */
  9764. +
  9765. +void
  9766. +clear_386_stack_locals ()
  9767. +{
  9768. +  enum machine_mode mode;
  9769. +  int n;
  9770. +
  9771. +  for (mode = VOIDmode; (int) mode < (int) MAX_MACHINE_MODE;
  9772. +       mode = (enum machine_mode) ((int) mode + 1))
  9773. +    for (n = 0; n < MAX_386_STACK_LOCALS; n++)
  9774. +      i386_stack_locals[(int) mode][n] = NULL_RTX;
  9775. +
  9776. +  /* Arrange to save and restore i386_stack_locals around nested functions.  */
  9777. +  save_machine_status = save_386_machine_status;
  9778. +  restore_machine_status = restore_386_machine_status;
  9779. +}
  9780. +
  9781. +/* Return a MEM corresponding to a stack slot with mode MODE.
  9782. +   Allocate a new slot if necessary.
  9783. +
  9784. +   The RTL for a function can have several slots available: N is
  9785. +   which slot to use.  */
  9786. +
  9787. +rtx
  9788. +assign_386_stack_local (mode, n)
  9789. +     enum machine_mode mode;
  9790. +     int n;
  9791. +{
  9792. +  if (n < 0 || n >= MAX_386_STACK_LOCALS)
  9793. +    abort ();
  9794. +
  9795. +  if (i386_stack_locals[(int) mode][n] == NULL_RTX)
  9796. +  {
  9797. +    i386_stack_locals[(int) mode][n]
  9798. +      = assign_stack_local (mode, GET_MODE_SIZE (mode), 0);
  9799. +  }
  9800. +  return i386_stack_locals[(int) mode][n];
  9801. +}
  9802. +
  9803. +
  9804. +/* all functions after here added by intel1 */
  9805. +/* intel1 */
  9806. +int is_mul(op,mode)
  9807. +    register rtx op;
  9808. +    enum machine_mode mode;
  9809. +{
  9810. +  return(GET_CODE(op)==MULT);
  9811. +}
  9812. +
  9813. +/* intel1 */
  9814. +int is_div(op,mode)
  9815. +    register rtx op;
  9816. +    enum machine_mode mode;
  9817. +{
  9818. +  return(GET_CODE(op)==DIV);
  9819. +}
  9820. +
  9821. +/* Create a new copy of an rtx.
  9822. +   Recursively copies the operands of the rtx,
  9823. +   except for those few rtx codes that are sharable.
  9824. +   Doesn't share CONST  */
  9825. +
  9826. +rtx
  9827. +copy_all_rtx (orig)
  9828. +     register rtx orig;
  9829. +{
  9830. +  register rtx copy;
  9831. +  register int i, j;
  9832. +  register RTX_CODE code;
  9833. +  register char *format_ptr;
  9834. +
  9835. +  code = GET_CODE (orig);
  9836. +
  9837. +  switch (code)
  9838. +    {
  9839. +    case REG:
  9840. +    case QUEUED:
  9841. +    case CONST_INT:
  9842. +    case CONST_DOUBLE:
  9843. +    case SYMBOL_REF:
  9844. +    case CODE_LABEL:
  9845. +    case PC:
  9846. +    case CC0:
  9847. +    case SCRATCH:
  9848. +      /* SCRATCH must be shared because they represent distinct values. */
  9849. +      return orig;
  9850. +
  9851. +#if 0
  9852. +    case CONST:
  9853. +      /* CONST can be shared if it contains a SYMBOL_REF.  If it contains
  9854. +     a LABEL_REF, it isn't sharable.  */
  9855. +      if (GET_CODE (XEXP (orig, 0)) == PLUS
  9856. +      && GET_CODE (XEXP (XEXP (orig, 0), 0)) == SYMBOL_REF
  9857. +      && GET_CODE (XEXP (XEXP (orig, 0), 1)) == CONST_INT)
  9858. +    return orig;
  9859. +      break;
  9860. +#endif
  9861. +      /* A MEM with a constant address is not sharable.  The problem is that
  9862. +     the constant address may need to be reloaded.  If the mem is shared,
  9863. +     then reloading one copy of this mem will cause all copies to appear
  9864. +     to have been reloaded.  */
  9865. +    }
  9866. +
  9867. +  copy = rtx_alloc (code);
  9868. +  PUT_MODE (copy, GET_MODE (orig));
  9869. +  copy->in_struct = orig->in_struct;
  9870. +  copy->volatil = orig->volatil;
  9871. +  copy->unchanging = orig->unchanging;
  9872. +  copy->integrated = orig->integrated;
  9873. +  /* intel1 */
  9874. +  copy->is_spill_rtx = orig->is_spill_rtx;
  9875. +  
  9876. +  format_ptr = GET_RTX_FORMAT (GET_CODE (copy));
  9877. +
  9878. +  for (i = 0; i < GET_RTX_LENGTH (GET_CODE (copy)); i++)
  9879. +    {
  9880. +      switch (*format_ptr++)
  9881. +    {
  9882. +    case 'e':
  9883. +      XEXP (copy, i) = XEXP (orig, i);
  9884. +      if (XEXP (orig, i) != NULL)
  9885. +        XEXP (copy, i) = copy_rtx (XEXP (orig, i));
  9886. +      break;
  9887. +
  9888. +    case '0':
  9889. +    case 'u':
  9890. +      XEXP (copy, i) = XEXP (orig, i);
  9891. +      break;
  9892. +
  9893. +    case 'E':
  9894. +    case 'V':
  9895. +      XVEC (copy, i) = XVEC (orig, i);
  9896. +      if (XVEC (orig, i) != NULL)
  9897. +        {
  9898. +          XVEC (copy, i) = rtvec_alloc (XVECLEN (orig, i));
  9899. +          for (j = 0; j < XVECLEN (copy, i); j++)
  9900. +        XVECEXP (copy, i, j) = copy_rtx (XVECEXP (orig, i, j));
  9901. +        }
  9902. +      break;
  9903. +
  9904. +    case 'w':
  9905. +      XWINT (copy, i) = XWINT (orig, i);
  9906. +      break;
  9907. +
  9908. +    case 'i':
  9909. +      XINT (copy, i) = XINT (orig, i);
  9910. +      break;
  9911. +
  9912. +    case 's':
  9913. +    case 'S':
  9914. +      XSTR (copy, i) = XSTR (orig, i);
  9915. +      break;
  9916. +
  9917. +    default:
  9918. +      abort ();
  9919. +    }
  9920. +    }
  9921. +  return copy;
  9922. +}
  9923. +
  9924. +
  9925. +/* try to rewrite a memory address to make it valid */
  9926. +void 
  9927. +rewrite_address (mem_rtx)
  9928. +     rtx mem_rtx;
  9929. +{
  9930. +  rtx index_rtx, base_rtx, offset_rtx, scale_rtx, ret_rtx;
  9931. +  int scale = 1;
  9932. +  int offset_adjust = 0;
  9933. +  int was_only_offset = 0;
  9934. +  rtx mem_addr = XEXP (mem_rtx, 0);
  9935. +  char *storage = (char *) oballoc (0);
  9936. +  int in_struct = 0;
  9937. +  int is_spill_rtx = 0;
  9938. +
  9939. +  in_struct = MEM_IN_STRUCT_P (mem_rtx);
  9940. +  is_spill_rtx = RTX_IS_SPILL_P (mem_rtx);
  9941. +
  9942. +  if (GET_CODE (mem_addr) == PLUS &&
  9943. +      GET_CODE (XEXP (mem_addr, 1)) == PLUS &&
  9944. +      GET_CODE (XEXP (XEXP (mem_addr, 1), 0)) == REG)
  9945. +    {                /* this part is utilized by the combiner */
  9946. +      ret_rtx =
  9947. +    gen_rtx (PLUS, GET_MODE (mem_addr),
  9948. +         gen_rtx (PLUS, GET_MODE (XEXP (mem_addr, 1)),
  9949. +              XEXP (mem_addr, 0),
  9950. +              XEXP (XEXP (mem_addr, 1), 0)),
  9951. +         XEXP (XEXP (mem_addr, 1), 1));
  9952. +      if (memory_address_p (GET_MODE (mem_rtx), ret_rtx))
  9953. +    {
  9954. +      XEXP (mem_rtx, 0) = ret_rtx;
  9955. +      RTX_IS_SPILL_P (ret_rtx) = is_spill_rtx;
  9956. +      return;
  9957. +    }
  9958. +      obfree (storage);
  9959. +    }
  9960. +
  9961. +  /* this part is utilized by loop.c */
  9962. +  /* If the address contains PLUS (reg,const) and this pattern is invalid
  9963. +     in this case - try to rewrite the address to make it valid  intel1
  9964. +  */
  9965. +  storage = (char *) oballoc (0);
  9966. +  index_rtx = base_rtx = offset_rtx = NULL;
  9967. +  /* find the base index and offset elements of the memory address */
  9968. +  if (GET_CODE (mem_addr) == PLUS)
  9969. +    {
  9970. +      if (GET_CODE (XEXP (mem_addr, 0)) == REG)
  9971. +    {
  9972. +      if (GET_CODE (XEXP (mem_addr, 1)) == REG)
  9973. +        {
  9974. +          base_rtx = XEXP (mem_addr, 1);
  9975. +          index_rtx = XEXP (mem_addr, 0);
  9976. +        }
  9977. +      else
  9978. +        {
  9979. +          base_rtx = XEXP (mem_addr, 0);
  9980. +          offset_rtx = XEXP (mem_addr, 1);
  9981. +        }
  9982. +    }
  9983. +      else if (GET_CODE (XEXP (mem_addr, 0)) == MULT)
  9984. +    {
  9985. +      index_rtx = XEXP (mem_addr, 0);
  9986. +      if (GET_CODE (XEXP (mem_addr, 1)) == REG)
  9987. +        {
  9988. +          base_rtx = XEXP (mem_addr, 1);
  9989. +        }
  9990. +      else
  9991. +        {
  9992. +          offset_rtx = XEXP (mem_addr, 1);
  9993. +        }
  9994. +    }
  9995. +      else if (GET_CODE (XEXP (mem_addr, 0)) == PLUS)
  9996. +    {
  9997. +      /* intel1 */
  9998. +      if (GET_CODE (XEXP (XEXP (mem_addr, 0), 0)) == PLUS &&
  9999. +          GET_CODE (XEXP (XEXP (XEXP (mem_addr, 0), 0), 0)) == MULT &&
  10000. +          GET_CODE (XEXP (XEXP (XEXP (XEXP (mem_addr, 0), 0), 0), 0)) == REG &&
  10001. +          GET_CODE (XEXP (XEXP (XEXP (XEXP (mem_addr, 0), 0), 0), 1)) == CONST_INT &&
  10002. +          GET_CODE (XEXP (XEXP (XEXP (mem_addr, 0), 0), 1)) == CONST_INT &&
  10003. +          GET_CODE (XEXP (XEXP (mem_addr, 0), 1)) == REG &&
  10004. +          GET_CODE (XEXP (mem_addr, 1)) == SYMBOL_REF)
  10005. +        {
  10006. +          index_rtx = XEXP (XEXP (XEXP (mem_addr, 0), 0), 0);
  10007. +          offset_rtx = XEXP (mem_addr, 1);
  10008. +          base_rtx = XEXP (XEXP (mem_addr, 0), 1);
  10009. +          offset_adjust = INTVAL (XEXP (XEXP (XEXP (mem_addr, 0), 0), 1));
  10010. +        }
  10011. +      else
  10012. +        {
  10013. +          offset_rtx = XEXP (mem_addr, 1);
  10014. +          index_rtx = XEXP (XEXP (mem_addr, 0), 0);
  10015. +          base_rtx = XEXP (XEXP (mem_addr, 0), 1);
  10016. +        }
  10017. +    }
  10018. +      else if (GET_CODE (XEXP (mem_addr, 0)) == CONST_INT)
  10019. +    {
  10020. +      was_only_offset = 1;
  10021. +      index_rtx = NULL;
  10022. +      base_rtx = NULL;
  10023. +      offset_rtx = XEXP (mem_addr, 1);
  10024. +      offset_adjust = INTVAL (XEXP (mem_addr, 0));
  10025. +      if (offset_adjust == 0)
  10026. +        {
  10027. +          XEXP (mem_rtx, 0) = offset_rtx;
  10028. +          RTX_IS_SPILL_P (XEXP (mem_rtx, 0)) = is_spill_rtx;
  10029. +          return;
  10030. +        }
  10031. +    }
  10032. +      else
  10033. +    {
  10034. +      obfree (storage);
  10035. +      return;
  10036. +    }
  10037. +    }
  10038. +  else if (GET_CODE (mem_addr) == MULT)
  10039. +    {
  10040. +      index_rtx = mem_addr;
  10041. +    }
  10042. +  else
  10043. +    {
  10044. +      obfree (storage);
  10045. +      return;
  10046. +    }
  10047. +  if (index_rtx && GET_CODE (index_rtx) == MULT)
  10048. +    {
  10049. +      if (GET_CODE (XEXP (index_rtx, 1)) != CONST_INT)
  10050. +    {
  10051. +      obfree (storage);
  10052. +      return;
  10053. +    }
  10054. +      scale_rtx = XEXP (index_rtx, 1);
  10055. +      scale = INTVAL (scale_rtx);
  10056. +      index_rtx = copy_all_rtx (XEXP (index_rtx, 0));
  10057. +    }
  10058. +  /* now find which of the elements are invalid and try to fix them */
  10059. +  if (index_rtx && GET_CODE (index_rtx) == CONST_INT && base_rtx == NULL)
  10060. +    {
  10061. +      offset_adjust = INTVAL (index_rtx) * scale;
  10062. +      if (offset_rtx && GET_CODE (offset_rtx) == CONST &&
  10063. +      GET_CODE (XEXP (offset_rtx, 0)) == PLUS)
  10064. +    {
  10065. +      if (GET_CODE (XEXP (XEXP (offset_rtx, 0), 0)) == SYMBOL_REF &&
  10066. +          GET_CODE (XEXP (XEXP (offset_rtx, 0), 1)) == CONST_INT)
  10067. +        {
  10068. +          offset_rtx = copy_all_rtx (offset_rtx);
  10069. +          XEXP (XEXP (offset_rtx, 0), 1) =
  10070. +        gen_rtx (CONST_INT, 0, INTVAL (XEXP (XEXP (offset_rtx, 0), 1)) + offset_adjust);
  10071. +          if (!CONSTANT_P (offset_rtx))
  10072. +        {
  10073. +          obfree (storage);
  10074. +          return;
  10075. +        }
  10076. +        }
  10077. +    }
  10078. +      else if (offset_rtx && GET_CODE (offset_rtx) == SYMBOL_REF)
  10079. +    {
  10080. +      offset_rtx =
  10081. +        gen_rtx (CONST, GET_MODE (offset_rtx),
  10082. +             gen_rtx (PLUS, GET_MODE (offset_rtx),
  10083. +                  offset_rtx,
  10084. +                  gen_rtx (CONST_INT, 0, offset_adjust)));
  10085. +      if (!CONSTANT_P (offset_rtx))
  10086. +        {
  10087. +          obfree (storage);
  10088. +          return;
  10089. +        }
  10090. +    }
  10091. +      else if (offset_rtx && GET_CODE (offset_rtx) == CONST_INT)
  10092. +    {
  10093. +      offset_rtx = gen_rtx (CONST_INT, 0, INTVAL (offset_rtx) + offset_adjust);
  10094. +    }
  10095. +      else if (!offset_rtx)
  10096. +    {
  10097. +      offset_rtx = gen_rtx (CONST_INT, 0, 0);
  10098. +    }
  10099. +      RTX_IS_SPILL_P (XEXP (mem_rtx, 0)) = is_spill_rtx;
  10100. +      XEXP (mem_rtx, 0) = offset_rtx;
  10101. +      return;
  10102. +    }
  10103. +  if (base_rtx && GET_CODE (base_rtx) == PLUS &&
  10104. +      GET_CODE (XEXP (base_rtx, 0)) == REG &&
  10105. +      GET_CODE (XEXP (base_rtx, 1)) == CONST_INT)
  10106. +    {
  10107. +      offset_adjust += INTVAL (XEXP (base_rtx, 1));
  10108. +      base_rtx = copy_all_rtx (XEXP (base_rtx, 0));
  10109. +    }
  10110. +  else if (base_rtx && GET_CODE (base_rtx) == CONST_INT)
  10111. +    {
  10112. +      offset_adjust += INTVAL (base_rtx);
  10113. +      base_rtx = NULL;
  10114. +    }
  10115. +  if (index_rtx && GET_CODE (index_rtx) == PLUS &&
  10116. +      GET_CODE (XEXP (index_rtx, 0)) == REG &&
  10117. +      GET_CODE (XEXP (index_rtx, 1)) == CONST_INT)
  10118. +    {
  10119. +      offset_adjust += INTVAL (XEXP (index_rtx, 1)) * scale;
  10120. +      index_rtx = copy_all_rtx (XEXP (index_rtx, 0));
  10121. +    }
  10122. +  if (index_rtx)
  10123. +    {
  10124. +      if (!LEGITIMATE_INDEX_P (index_rtx)
  10125. +      && !(index_rtx == stack_pointer_rtx && scale == 1 && base_rtx == NULL))
  10126. +    {
  10127. +      obfree (storage);
  10128. +      return;
  10129. +    }
  10130. +    }
  10131. +  if (base_rtx)
  10132. +    {
  10133. +      if (!LEGITIMATE_INDEX_P (base_rtx) && GET_CODE (base_rtx) != REG)
  10134. +    {
  10135. +      obfree (storage);
  10136. +      return;
  10137. +    }
  10138. +    }
  10139. +  if (offset_adjust != 0)
  10140. +    {
  10141. +      if (offset_rtx)
  10142. +    {
  10143. +      if (GET_CODE (offset_rtx) == CONST &&
  10144. +          GET_CODE (XEXP (offset_rtx, 0)) == PLUS)
  10145. +        {
  10146. +          if (GET_CODE (XEXP (XEXP (offset_rtx, 0), 0)) == SYMBOL_REF &&
  10147. +          GET_CODE (XEXP (XEXP (offset_rtx, 0), 1)) == CONST_INT)
  10148. +        {
  10149. +          offset_rtx = copy_all_rtx (offset_rtx);
  10150. +          XEXP (XEXP (offset_rtx, 0), 1) =
  10151. +            gen_rtx (CONST_INT, 0, INTVAL (XEXP (XEXP (offset_rtx, 0), 1)) + offset_adjust);
  10152. +          if (!CONSTANT_P (offset_rtx))
  10153. +            {
  10154. +              obfree (storage);
  10155. +              return;
  10156. +            }
  10157. +        }
  10158. +        }
  10159. +      else if (GET_CODE (offset_rtx) == SYMBOL_REF)
  10160. +        {
  10161. +          offset_rtx =
  10162. +        gen_rtx (CONST, GET_MODE (offset_rtx),
  10163. +             gen_rtx (PLUS, GET_MODE (offset_rtx),
  10164. +                  offset_rtx,
  10165. +                  gen_rtx (CONST_INT, 0, offset_adjust)));
  10166. +          if (!CONSTANT_P (offset_rtx))
  10167. +        {
  10168. +          obfree (storage);
  10169. +          return;
  10170. +        }
  10171. +        }
  10172. +      else if (GET_CODE (offset_rtx) == CONST_INT)
  10173. +        {
  10174. +          offset_rtx = gen_rtx (CONST_INT, 0, INTVAL (offset_rtx) + offset_adjust);
  10175. +        }
  10176. +      else
  10177. +        {
  10178. +          obfree (storage);
  10179. +          return;
  10180. +        }
  10181. +    }
  10182. +      else
  10183. +    {
  10184. +      offset_rtx = gen_rtx (CONST_INT, 0, offset_adjust);
  10185. +    }
  10186. +      if (index_rtx)
  10187. +    {
  10188. +      if (base_rtx)
  10189. +        {
  10190. +          if (scale != 1)
  10191. +        {
  10192. +          if (GET_CODE (offset_rtx) == CONST_INT &&
  10193. +              INTVAL (offset_rtx) == 0)
  10194. +            {
  10195. +              ret_rtx = gen_rtx (PLUS, GET_MODE (base_rtx),
  10196. +                 gen_rtx (MULT, GET_MODE (index_rtx), index_rtx,
  10197. +                      scale_rtx),
  10198. +                     base_rtx);
  10199. +            }
  10200. +          else
  10201. +            {
  10202. +              ret_rtx = gen_rtx (PLUS, GET_MODE (offset_rtx),
  10203. +                     gen_rtx (PLUS, GET_MODE (base_rtx),
  10204. +                 gen_rtx (MULT, GET_MODE (index_rtx), index_rtx,
  10205. +                      scale_rtx),
  10206. +                          base_rtx),
  10207. +                     offset_rtx);
  10208. +            }
  10209. +        }
  10210. +          else
  10211. +        {
  10212. +          if (GET_CODE (offset_rtx) == CONST_INT &&
  10213. +              INTVAL (offset_rtx) == 0)
  10214. +            {
  10215. +              ret_rtx = gen_rtx (PLUS, GET_MODE (index_rtx), index_rtx, base_rtx);
  10216. +            }
  10217. +          else
  10218. +            {
  10219. +              ret_rtx = gen_rtx (PLUS, GET_MODE (offset_rtx),
  10220. +                 gen_rtx (PLUS, GET_MODE (index_rtx), index_rtx,
  10221. +                      base_rtx),
  10222. +                     offset_rtx);
  10223. +            }
  10224. +        }
  10225. +        }
  10226. +      else
  10227. +        {
  10228. +          if (scale != 1)
  10229. +        {
  10230. +          if (GET_CODE (offset_rtx) == CONST_INT &&
  10231. +              INTVAL (offset_rtx) == 0)
  10232. +            {
  10233. +              ret_rtx = gen_rtx (MULT, GET_MODE (index_rtx), index_rtx, scale_rtx);
  10234. +            }
  10235. +          else
  10236. +            {
  10237. +              ret_rtx =
  10238. +            gen_rtx (PLUS, GET_MODE (offset_rtx),
  10239. +                 gen_rtx (MULT, GET_MODE (index_rtx), index_rtx,
  10240. +                      scale_rtx),
  10241. +                 offset_rtx);
  10242. +            }
  10243. +        }
  10244. +          else
  10245. +        {
  10246. +          if (GET_CODE (offset_rtx) == CONST_INT &&
  10247. +              INTVAL (offset_rtx) == 0)
  10248. +            {
  10249. +              ret_rtx = index_rtx;
  10250. +            }
  10251. +          else
  10252. +            {
  10253. +              ret_rtx = gen_rtx (PLUS, GET_MODE (index_rtx), index_rtx, offset_rtx);
  10254. +            }
  10255. +        }
  10256. +        }
  10257. +    }
  10258. +      else
  10259. +    {
  10260. +      if (base_rtx)
  10261. +        {
  10262. +          if (GET_CODE (offset_rtx) == CONST_INT &&
  10263. +          INTVAL (offset_rtx) == 0)
  10264. +        {
  10265. +          ret_rtx = base_rtx;
  10266. +        }
  10267. +          else
  10268. +        {
  10269. +          ret_rtx = gen_rtx (PLUS, GET_MODE (base_rtx), base_rtx, offset_rtx);
  10270. +        }
  10271. +        }
  10272. +      else if (was_only_offset)
  10273. +        {
  10274. +          ret_rtx = offset_rtx;
  10275. +        }
  10276. +      else
  10277. +        {
  10278. +          obfree (storage);
  10279. +          return;
  10280. +        }
  10281. +    }
  10282. +      XEXP (mem_rtx, 0) = ret_rtx;
  10283. +      RTX_IS_SPILL_P (XEXP (mem_rtx, 0)) = is_spill_rtx;
  10284. +      return;
  10285. +    }
  10286. +  else
  10287. +    {
  10288. +      obfree (storage);
  10289. +      return;
  10290. +    }
  10291. +}
  10292. +
  10293. +/* return 1 if the first insn to set cc before insn also sets the register
  10294. +   reg_rtx - otherwise return 0
  10295. +*/
  10296. +int
  10297. +last_to_set_cc (reg_rtx, insn)
  10298. +     rtx reg_rtx, insn;
  10299. +{
  10300. +  rtx prev_insn = PREV_INSN (insn);
  10301. +
  10302. +  while (prev_insn)
  10303. +    {
  10304. +      if (GET_CODE (prev_insn) == NOTE)
  10305. +    {
  10306. +      ;
  10307. +    }
  10308. +      else if (GET_CODE (prev_insn) == INSN)
  10309. +    {
  10310. +      if (GET_CODE (PATTERN (prev_insn)) != SET)
  10311. +        {
  10312. +          return (0);
  10313. +        }
  10314. +      if (rtx_equal_p (SET_DEST (PATTERN (prev_insn)), reg_rtx))
  10315. +        {
  10316. +          if (sets_condition_code (SET_SRC (PATTERN (prev_insn))))
  10317. +        {
  10318. +          return (1);
  10319. +        }
  10320. +          else
  10321. +        {
  10322. +          return (0);
  10323. +        }
  10324. +        }
  10325. +      else if (!doesnt_set_condition_code (SET_SRC (PATTERN (prev_insn))))
  10326. +        {
  10327. +          return (0);
  10328. +        }
  10329. +    }
  10330. +      else
  10331. +    {
  10332. +      return (0);
  10333. +    }
  10334. +      prev_insn = PREV_INSN (prev_insn);
  10335. +    }
  10336. +  return (0);
  10337. +}
  10338. +
  10339. +int
  10340. +doesnt_set_condition_code (pat)
  10341. +     rtx pat;
  10342. +{
  10343. +  switch (GET_CODE (pat))
  10344. +    {
  10345. +    case MEM:
  10346. +    case REG:
  10347. +      return (1);
  10348. +
  10349. +    default:
  10350. +      return (0);
  10351. +
  10352. +    }
  10353. +}
  10354. +
  10355. +int
  10356. +sets_condition_code (pat)
  10357. +     rtx pat;
  10358. +{
  10359. +  switch (GET_CODE (pat))
  10360. +    {
  10361. +    case PLUS:
  10362. +    case MINUS:
  10363. +    case AND:
  10364. +    case IOR:
  10365. +    case XOR:
  10366. +    case NOT:
  10367. +    case NEG:
  10368. +    case MULT:
  10369. +    case DIV:
  10370. +    case MOD:
  10371. +    case UDIV:
  10372. +    case UMOD:
  10373. +      return (1);
  10374. +
  10375. +    default:
  10376. +      return (0);
  10377. +
  10378. +    }
  10379. +}
  10380. +
  10381. +
  10382. +/* intel1 */
  10383. +int
  10384. +str_immediate_operand (op, mode)
  10385. +     register rtx op;
  10386. +     enum machine_mode mode;
  10387. +{
  10388. +  if (GET_CODE (op) == CONST_INT && INTVAL (op) <= 32 && INTVAL (op) >= 0)
  10389. +    {
  10390. +      return (1);
  10391. +    }
  10392. +  return (0);
  10393. +}
  10394. +
  10395. +/* intel1 */
  10396. +void
  10397. +override_options ()
  10398. +{
  10399. +  register int i, start;
  10400. +  register int regno;
  10401. +  register enum machine_mode mode;
  10402. +#if 0
  10403. +  int blend = 0;
  10404. +#endif
  10405. +
  10406. +  /* only one `-mcpu' allowed */
  10407. +  if (TARGET_X && (TARGET_X != TARGET_386) && (TARGET_X != TARGET_486) && (TARGET_X != TARGET_PENTIUM))
  10408. +    fatal ("multilple `-mcpu' definitions .\n");
  10409. +
  10410. + /* if `-mcpu' use it, otherwise take default */
  10411. + target_flags |= USE_CPU;
  10412. +
  10413. +  if (TARGET_PENTIUM)
  10414. +    x86_cpu = PROCESSOR_PENTIUM;
  10415. +  else if (TARGET_486)
  10416. +    x86_cpu = PROCESSOR_486;
  10417. +  else if (TARGET_386)
  10418. +    x86_cpu = PROCESSOR_386;
  10419. +  else /* no processor type ? */
  10420. +    fatal ("no processor type.\n");
  10421. +  
  10422. +#if 0 /* what happens if we have few -mcpu's, I don't think it's needed */
  10423. +  /* Identify the processor type */
  10424. +  if (!(TARGET_PENTIUM) && !(TARGET_486) && !(TARGET_386))
  10425. +    {
  10426. +      x86_cpu = PROCESSOR_PENTIUM;
  10427. +      target_flags |= (TARGET_486_SWITCH);
  10428. +      blend = 1;
  10429. +    }
  10430. +
  10431. +  else
  10432. +    {
  10433. +      x86_cpu = PROCESSOR_DEFAULT;
  10434. +      if (TARGET_PENTIUM)
  10435. +    {
  10436. +      x86_cpu = PROCESSOR_PENTIUM;
  10437. +    }
  10438. +      if (TARGET_486)
  10439. +    {
  10440. +      if (x86_cpu != PROCESSOR_DEFAULT)
  10441. +        {
  10442. +          error ("conflicting -mX86 : using blend");
  10443. +          blend = 1;
  10444. +          x86_cpu = PROCESSOR_PENTIUM;
  10445. +          target_flags &= ~(TARGET_386_SWITCH);
  10446. +          target_flags &= ~(TARGET_PENTIUM_SWITCH);
  10447. +        }
  10448. +      else
  10449. +        {
  10450. +          x86_cpu = PROCESSOR_486;
  10451. +        }
  10452. +    }
  10453. +      if (TARGET_386)
  10454. +    {
  10455. +      if (x86_cpu != PROCESSOR_DEFAULT)
  10456. +        {
  10457. +          error ("conflicting -mX86 : using blend");
  10458. +          blend = 1;
  10459. +          x86_cpu = PROCESSOR_486;
  10460. +          target_flags &= ~(TARGET_386_SWITCH);
  10461. +          target_flags &= ~(TARGET_PENTIUM_SWITCH);
  10462. +          target_flags |= (TARGET_486_SWITCH);
  10463. +        }
  10464. +      else
  10465. +        {
  10466. +          x86_cpu = PROCESSOR_386;
  10467. +        }
  10468. +    }
  10469. +
  10470. +
  10471. +    }
  10472. +#endif
  10473. +  if (opt_level >= 4)
  10474. +    {
  10475. +      if (TARGET_486)
  10476. +        {
  10477. +      if (opt_level == 4
  10478. +          && !flag_no_interleave_stack_non_stack)
  10479. +        {
  10480. +          flag_interleave_stack_non_stack = 1;
  10481. +          flag_schedule_insns = 1;
  10482. +        }
  10483. +        }
  10484. +#if 0
  10485. +      if(TARGET_BLEND)
  10486. +        {
  10487. +          if (!flag_no_risc)
  10488. +            flag_risc = 1;
  10489. +          if (!flag_no_risc_const)
  10490. +            flag_risc_const = 1;
  10491. +          if (!flag_no_recombine)
  10492. +            flag_recombine = 1;
  10493. +        }
  10494. +#endif
  10495. +      if (TARGET_PENTIUM)
  10496. +        {
  10497. +          if (!flag_no_risc)
  10498. +            flag_risc = 1;
  10499. +          if (!flag_no_risc_const)
  10500. +            flag_risc_const = 1;
  10501. +          /*if (!flag_no_recombine)
  10502. +            flag_recombine = 1;*/
  10503. +      if (opt_level == 4
  10504. +          && !flag_no_schedule_stack_reg_insns)
  10505. +        {
  10506. +          flag_schedule_stack_reg_insns = 1;
  10507. +          flag_schedule_insns = 1;
  10508. +        }
  10509. +      if (opt_level == 4
  10510. +          && !flag_no_interleave_stack_non_stack)
  10511. +        {
  10512. +          flag_interleave_stack_non_stack = 1;
  10513. +          flag_schedule_insns = 1;
  10514. +        }
  10515. +        }
  10516. +    }
  10517. +}
  10518. +
  10519. +
  10520. +
  10521. +
  10522. +optimization_options (level)
  10523. +     int level;
  10524. +{
  10525. +  opt_level = level;
  10526. +  if (level > 0)
  10527. +    {
  10528. +      flag_opt_reg_use = 1;
  10529. +      flag_reduce_index_givs = 1;
  10530. +    }
  10531. +  if (level >= 2)
  10532. +    {
  10533. +#ifdef INSN_SCHEDULING
  10534. +      flag_schedule_insns = 0;
  10535. +      flag_schedule_insns_after_reload = 0;
  10536. +#endif
  10537. +    }
  10538. +  if (level >= 3)
  10539. +    {
  10540. +      flag_inline_functions = 1;
  10541. +      flag_jump_back = 1;
  10542. +      flag_copy_prop = 1;
  10543. +      flag_compare_elim = 1;
  10544. +      flag_sftwr_pipe = 1;
  10545. +      flag_omit_frame_pointer = 1;
  10546. +      flag_reg_reg_copy_opt = 1;
  10547. +      flag_opt_reg_stack = 1;
  10548. +      flag_loop_after_global = 1;
  10549. +      flag_peep_spills = 1;
  10550. +      flag_replace_stack_mem = 1;
  10551. +      flag_opt_jumps_out = 1;
  10552. +      flag_replace_mem = 1;
  10553. +      flag_correct_cse_mistakes = 1;
  10554. +      flag_push_load_into_loop = 1;
  10555. +      flag_replace_reload_regs = 1;
  10556. +      flag_sign_extension_elim = 1;
  10557. +      flag_lift_stores = 1;
  10558. +      flag_runtime_lift_stores = 1;
  10559. +    }
  10560. +  if (level >= 4)
  10561. +    {
  10562. +#ifdef INSN_SCHEDULING
  10563. +      flag_schedule_insns_after_reload = 1;
  10564. +      flag_swap_for_agi = 1;
  10565. +      if (TARGET_PENTIUM)
  10566. +    {
  10567. +      flag_risc = 1;
  10568. +      flag_risc_const = 1;
  10569. +      /*flag_recombine = 1;*/
  10570. +      if (level == 4)
  10571. +        {
  10572. +          flag_schedule_stack_reg_insns = 1;
  10573. +          flag_schedule_insns = 1;
  10574. +        }
  10575. +    }
  10576. +#endif
  10577. +    }
  10578. +  if (level >= 5)
  10579. +    {
  10580. +#ifdef INSN_SCHEDULING
  10581. +      flag_schedule_insns = 1;
  10582. +#endif
  10583. +    }
  10584. +  if (flag_no_risc)
  10585. +    flag_risc = 0;
  10586. +  if (flag_no_risc_const)
  10587. +    flag_risc_const = 0;
  10588. +  if (flag_no_recombine)
  10589. +    flag_recombine = 0;
  10590. +  if (flag_no_risc_mem_dest)
  10591. +    flag_risc_mem_dest = 0;
  10592. +}
  10593. +
  10594. +/* intel1 */
  10595. +
  10596. +int
  10597. +is_fp_insn (insn)
  10598. +     rtx insn;
  10599. +{
  10600. +  if (GET_CODE (insn) == INSN && GET_CODE (PATTERN (insn)) == SET
  10601. +      && (GET_MODE (SET_DEST (PATTERN (insn))) == DFmode
  10602. +      || GET_MODE (SET_DEST (PATTERN (insn))) == SFmode))
  10603. +    {
  10604. +      return (1);
  10605. +    }
  10606. +  return (0);
  10607. +}
  10608. +
  10609. +
  10610. +/*
  10611. +  Return 1 if the mode of the SET_DEST of insn is floating point
  10612. +  and it is not an fld or a move from memory to memory.
  10613. +  Otherwise return 0
  10614. +*/
  10615. +int
  10616. +is_fp_dest (insn)
  10617. +     rtx insn;
  10618. +{
  10619. +  if (GET_CODE (insn) == INSN && GET_CODE (PATTERN (insn)) == SET
  10620. +      && (GET_MODE (SET_DEST (PATTERN (insn))) == DFmode
  10621. +      || GET_MODE (SET_DEST (PATTERN (insn))) == SFmode)
  10622. +      && GET_CODE (SET_DEST (PATTERN (insn))) == REG
  10623. +      && REGNO (SET_DEST (PATTERN (insn))) >= FIRST_FLOAT_REG
  10624. +      && GET_CODE (SET_SRC (insn)) != MEM
  10625. +     )
  10626. +    {
  10627. +      return (1);
  10628. +    }
  10629. +  return (0);
  10630. +}
  10631. +
  10632. +/*
  10633. +  Return 1 if the mode of the SET_DEST floating point and is memory
  10634. +  and the source is a register.  
  10635. +*/
  10636. +int
  10637. +is_fp_store (insn)
  10638. +     rtx insn;
  10639. +{
  10640. +  if (GET_CODE (insn) == INSN && GET_CODE (PATTERN (insn)) == SET
  10641. +      && (GET_MODE (SET_DEST (PATTERN (insn))) == DFmode
  10642. +      || GET_MODE (SET_DEST (PATTERN (insn))) == SFmode)
  10643. +      && GET_CODE (SET_DEST (PATTERN (insn))) == MEM
  10644. +      && GET_CODE (SET_SRC (PATTERN (insn))) == REG
  10645. +     )
  10646. +    {
  10647. +      return (1);
  10648. +    }
  10649. +  return (0);
  10650. +}
  10651. +
  10652. +
  10653. +/*
  10654. +  Return 1 if dep_insn sets a register which insn uses as a base
  10655. +  or index to reference memory.
  10656. +  otherwise return 0
  10657. +*/
  10658. +int
  10659. +agi_dependent (insn, dep_insn)
  10660. +     rtx insn, dep_insn;
  10661. +{
  10662. +  if (GET_CODE (dep_insn) == INSN && GET_CODE (PATTERN (dep_insn)) == SET
  10663. +      && GET_CODE (SET_DEST (PATTERN (dep_insn))) == REG)
  10664. +    {
  10665. +      return (reg_mentioned_in_mem (SET_DEST (PATTERN (dep_insn)), insn));
  10666. +    }
  10667. +  if (GET_CODE (dep_insn) == INSN && GET_CODE (PATTERN (dep_insn)) == SET
  10668. +      && GET_CODE (SET_DEST (PATTERN (dep_insn))) == MEM
  10669. +      && push_operand (SET_DEST (PATTERN (dep_insn)),
  10670. +                       GET_MODE (SET_DEST (PATTERN (dep_insn))))
  10671. +     )
  10672. +    {
  10673. +      return (reg_mentioned_in_mem (stack_pointer_rtx, insn));
  10674. +    }
  10675. +  
  10676. +  return (0);
  10677. +}
  10678. +
  10679. +/*
  10680. +  Return 1 if reg is used in rtl as a base or index for a memory ref
  10681. +  otherwise return 0.
  10682. +*/
  10683. +int
  10684. +reg_mentioned_in_mem (reg, rtl)
  10685. +     rtx reg, rtl;
  10686. +{
  10687. +  register char *fmt;
  10688. +  register int i;
  10689. +  register enum rtx_code code;
  10690. +
  10691. +  if (rtl == NULL)
  10692. +    return (0);
  10693. +
  10694. +  code = GET_CODE (rtl);
  10695. +
  10696. +  switch (code)
  10697. +    {
  10698. +    case HIGH:
  10699. +    case CONST_INT:
  10700. +    case CONST:
  10701. +    case CONST_DOUBLE:
  10702. +    case SYMBOL_REF:
  10703. +    case LABEL_REF:
  10704. +    case PC:
  10705. +    case CC0:
  10706. +    case SUBREG:
  10707. +      return (0);
  10708. +
  10709. +
  10710. +    }
  10711. +
  10712. +  if (code == MEM && reg_mentioned_p (reg, rtl))
  10713. +    {
  10714. +      return (1);
  10715. +    }
  10716. +
  10717. +  fmt = GET_RTX_FORMAT (code);
  10718. +
  10719. +  for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
  10720. +    {
  10721. +      if (fmt[i] == 'E')
  10722. +    {
  10723. +      register int j;
  10724. +      for (j = XVECLEN (rtl, i) - 1; j >= 0; j--)
  10725. +        if (reg_mentioned_in_mem (reg, XVECEXP (rtl, i, j)))
  10726. +          return 1;
  10727. +    }
  10728. +      else if (fmt[i] == 'e'
  10729. +           && reg_mentioned_in_mem (reg, XEXP (rtl, i)))
  10730. +    return 1;
  10731. +    }
  10732. +  return (0);
  10733. +}
  10734. +
  10735. diff -r -u -H -N gcc-2.6.3/config/i386/i386.h gcc-i2.6.3/config/i386/i386.h
  10736. --- gcc-2.6.3/config/i386/i386.h    Wed Oct 19 16:52:09 1994
  10737. +++ gcc-i2.6.3/config/i386/i386.h    Wed Feb 15 23:07:40 1995
  10738. @@ -1,5 +1,8 @@
  10739. -/* Definitions of target machine for GNU compiler for Intel X86 (386, 486, pentium)
  10740. -   Copyright (C) 1988, 1992, 1994 Free Software Foundation, Inc.
  10741. +/* Definitions of target machine for GNU compiler for Intel X86.
  10742. +   Copyright (C) 1988, 1992 Free Software Foundation, Inc.
  10743. +
  10744. +   Pentium cpu support and other enhancements by Tevi Devor Intel Corp.
  10745. +   (tevi@iil.intel.com).
  10746.  
  10747.  This file is part of GNU CC.
  10748.  
  10749. @@ -54,6 +57,50 @@
  10750.  /* Run-time compilation parameters selecting different hardware subsets.  */
  10751.  
  10752.  extern int target_flags;
  10753. +/* Which processor to schedule for. intel1 */
  10754. +
  10755. +enum processor_type {
  10756. +  PROCESSOR_DEFAULT,
  10757. +  PROCESSOR_386,
  10758. +  PROCESSOR_486,
  10759. +  PROCESSOR_PENTIUM
  10760. +};
  10761. +extern enum processor_type x86_cpu;    /* which cpu are we scheduling for */
  10762. +
  10763. +/* intel1 */
  10764. +#define REDUCE_INDEX (TARGET_486 || TARGET_PENTIUM)
  10765. +#define SAVE_ON_REGS 1
  10766. +#define MAX_DEST_ADDR_GIVS 5
  10767. +#define PREFER_JUMP_NOT_TAKEN 1
  10768. +#define PREFER_CONST_IN_REG 1
  10769. +#define IGNORE_NON_DATA_DEP 1
  10770. +#define STORE_NOT_SET_CC0 1
  10771. +#define NO_CROSS_JUMP_ON_LOOP_ENTRY 1
  10772. +#define AGI 1
  10773. +/* #define SPILL1 */
  10774. +#define EXPENSIVE_OPS(x) \
  10775. +   ( GET_CODE(x)==MULT ? \
  10776. +       ((GET_CODE (XEXP (x, 1)) == CONST_INT && \
  10777. +    exact_log2 (INTVAL (XEXP (x, 1))) >= 0) ? 0 : 1) : \
  10778. +    (GET_CODE(x)==DIV || GET_CODE(x)==UDIV || \
  10779. +     GET_CODE(x)==MOD || GET_CODE(x)==UMOD ))
  10780. +
  10781. +#define NO_STACK_REG_REORDER (!TARGET_PENTIUM)
  10782. +
  10783. +#define STACK_REG_REORDER \
  10784. +    ((TARGET_PENTIUM) && reload_completed == 0 && flag_schedule_stack_reg_insns)
  10785. +
  10786. +#define STACK_NON_STACK_INTERLEAVE \
  10787. +    (reload_completed == 0 && flag_interleave_stack_non_stack)
  10788. +    
  10789. +#define IS_RISC_MODE(mode) (((mode) == QImode || (mode) == SImode))
  10790. +
  10791. +/* Number of extra pseudo registers we allocate for so that reg-stack
  10792. +   can replace fld's and fstps with movs
  10793. +*/
  10794. +#define SPARE_REGS 5
  10795. +#define OVERRIDE_OPTIONS override_options()
  10796. +
  10797.  
  10798.  /* Macros used in the machine description to test the flags.  */
  10799.  
  10800. @@ -62,142 +109,106 @@
  10801.  #define TARGET_CPU_DEFAULT 0
  10802.  #endif
  10803.  
  10804. -/* Masks for the -m switches */
  10805. -#define MASK_80387        000000000001    /* Hardware floating point */
  10806. -#define MASK_486        000000000002    /* 80486 specific */
  10807. -#define MASK_NOTUSED        000000000004    /* bit not currently used */
  10808. -#define MASK_RTD        000000000010    /* Use ret that pops args */
  10809. -#define MASK_REGPARM        000000000020    /* Pass args in eax, edx */
  10810. -#define MASK_SVR3_SHLIB        000000000040    /* Uninit locals into bss */
  10811. -#define MASK_IEEE_FP        000000000100    /* IEEE fp comparisons */
  10812. -#define MASK_FLOAT_RETURNS    000000000200    /* Return float in st(0) */
  10813. -#define MASK_NO_FANCY_MATH_387    000000000400    /* Disable sin, cos, sqrt */
  10814. -
  10815. -                        /* Temporary codegen switches */
  10816. -#define MASK_DEBUG_ADDR        000001000000    /* Debug GO_IF_LEGITIMATE_ADDRESS */
  10817. -#define MASK_NO_WIDE_MULTIPLY    000002000000    /* Disable 32x32->64 multiplies */
  10818. -#define MASK_NO_MOVE        000004000000    /* Don't generate mem->mem */
  10819. -
  10820. -/* Use the floating point instructions */
  10821. -#define TARGET_80387 (target_flags & MASK_80387)
  10822. -
  10823. +/* Compile 80387 insns for floating point (not library calls).  */
  10824. +#define TARGET_80387 (target_flags & 1)
  10825.  /* Compile using ret insn that pops args.
  10826.     This will not work unless you use prototypes at least
  10827.     for all functions that can take varying numbers of args.  */  
  10828. -#define TARGET_RTD (target_flags & MASK_RTD)
  10829. -
  10830. +#define TARGET_RTD (target_flags & 8)
  10831.  /* Compile passing first two args in regs 0 and 1.
  10832.     This exists only to test compiler features that will
  10833.     be needed for RISC chips.  It is not usable
  10834.     and is not intended to be usable on this cpu.  */
  10835. -#define TARGET_REGPARM (target_flags & MASK_RTD)
  10836. +#define TARGET_REGPARM (target_flags & 020)
  10837.  
  10838.  /* Put uninitialized locals into bss, not data.
  10839.     Meaningful only on svr3.  */
  10840. -#define TARGET_SVR3_SHLIB (target_flags & MASK_SVR3_SHLIB)
  10841. +#define TARGET_SVR3_SHLIB (target_flags & 040)
  10842.  
  10843.  /* Use IEEE floating point comparisons.  These handle correctly the cases
  10844.     where the result of a comparison is unordered.  Normally SIGFPE is
  10845.     generated in such cases, in which case this isn't needed.  */
  10846. -#define TARGET_IEEE_FP (target_flags & MASK_IEEE_FP)
  10847. +#define TARGET_IEEE_FP (target_flags & 0100)
  10848.  
  10849.  /* Functions that return a floating point value may return that value
  10850.     in the 387 FPU or in 386 integer registers.  If set, this flag causes
  10851.     the 387 to be used, which is compatible with most calling conventions. */
  10852. -#define TARGET_FLOAT_RETURNS_IN_80387 (target_flags & MASK_FLOAT_RETURNS)
  10853. -
  10854. -/* Disable generation of FP sin, cos and sqrt operations for 387.
  10855. -   This is because FreeBSD lacks these in the math-emulator-code */
  10856. -#define TARGET_NO_FANCY_MATH_387 (target_flags & MASK_NO_FANCY_MATH_387)
  10857. -
  10858. -/* Temporary switches for tuning code generation */
  10859. -
  10860. -/* Disable 32x32->64 bit multiplies that are used for long long multiplies
  10861. -   and division by constants, but sometimes cause reload problems.  */
  10862. -#define TARGET_NO_WIDE_MULTIPLY (target_flags & MASK_NO_WIDE_MULTIPLY)
  10863. -#define TARGET_WIDE_MULTIPLY (!TARGET_NO_WIDE_MULTIPLY)
  10864. -
  10865. -/* Debug GO_IF_LEGITIMATE_ADDRESS */
  10866. -#define TARGET_DEBUG_ADDR (target_flags & MASK_DEBUG_ADDR)
  10867. -
  10868. -/* Hack macros for tuning code generation */
  10869. -#define TARGET_MOVE    ((target_flags & MASK_NO_MOVE) == 0)    /* Don't generate memory->memory */
  10870. -
  10871. -/* Specific hardware switches */
  10872. -#define TARGET_486    (target_flags & MASK_486)    /* 80486DX, 80486SX, 80486DX[24] */
  10873. -#define TARGET_386    (!TARGET_486)             /* 80386 */
  10874. -
  10875. -#define TARGET_SWITCHES                            \
  10876. -{ { "80387",             MASK_80387 },                \
  10877. -  { "no-80387",            -MASK_80387 },                \
  10878. -  { "hard-float",         MASK_80387 },                \
  10879. -  { "soft-float",        -MASK_80387 },                \
  10880. -  { "no-soft-float",         MASK_80387 },                \
  10881. -  { "386",            -MASK_486 },                \
  10882. -  { "no-386",             MASK_486 },                \
  10883. -  { "486",             MASK_486 },                \
  10884. -  { "no-486",            -MASK_486 },                \
  10885. -  { "rtd",             MASK_RTD },                \
  10886. -  { "no-rtd",            -MASK_RTD },                \
  10887. -  { "regparm",             MASK_REGPARM },            \
  10888. -  { "no-regparm",        -MASK_REGPARM },            \
  10889. -  { "svr3-shlib",         MASK_SVR3_SHLIB },            \
  10890. -  { "no-svr3-shlib",        -MASK_SVR3_SHLIB },            \
  10891. -  { "ieee-fp",             MASK_IEEE_FP },            \
  10892. -  { "no-ieee-fp",        -MASK_IEEE_FP },            \
  10893. -  { "fp-ret-in-387",         MASK_FLOAT_RETURNS },            \
  10894. -  { "no-fp-ret-in-387",        -MASK_FLOAT_RETURNS },            \
  10895. -  { "no-fancy-math-387",     MASK_NO_FANCY_MATH_387 },        \
  10896. -  { "fancy-math-387",        -MASK_NO_FANCY_MATH_387 },        \
  10897. -  { "no-wide-multiply",         MASK_NO_WIDE_MULTIPLY },        \
  10898. -  { "wide-multiply",        -MASK_NO_WIDE_MULTIPLY },        \
  10899. -  { "debug-addr",         MASK_DEBUG_ADDR },            \
  10900. -  { "no-debug-addr",        -MASK_DEBUG_ADDR },            \
  10901. -  { "move",            -MASK_NO_MOVE },            \
  10902. -  { "no-move",             MASK_NO_MOVE },            \
  10903. -  SUBTARGET_SWITCHES                            \
  10904. -  { "", TARGET_DEFAULT | TARGET_CPU_DEFAULT}}
  10905. -
  10906. -/* This macro is similar to `TARGET_SWITCHES' but defines names of
  10907. -   command options that have values.  Its definition is an
  10908. -   initializer with a subgrouping for each command option.
  10909. -
  10910. -   Each subgrouping contains a string constant, that defines the
  10911. -   fixed part of the option name, and the address of a variable.  The
  10912. -   variable, type `char *', is set to the variable part of the given
  10913. -   option if the fixed part matches.  The actual option name is made
  10914. -   by appending `-m' to the specified name.  */
  10915. -#define TARGET_OPTIONS                            \
  10916. -{ { "reg-alloc=", &i386_reg_alloc_order },                \
  10917. -  SUBTARGET_OPTIONS }
  10918. -
  10919. -/* Sometimes certain combinations of command options do not make
  10920. -   sense on a particular target machine.  You can define a macro
  10921. -   `OVERRIDE_OPTIONS' to take account of this.  This macro, if
  10922. -   defined, is executed once just after all the command options have
  10923. -   been parsed.
  10924. +#define TARGET_FLOAT_RETURNS_IN_80387 (target_flags & 0200)
  10925.  
  10926. -   Don't use this macro to turn on various extra optimizations for
  10927. -   `-O'.  That is what `OPTIMIZATION_OPTIONS' is for.  */
  10928. +/* Macro to define tables used to set the flags.
  10929. +   This is a list in braces of pairs in braces,
  10930. +   each pair being { "NAME", VALUE }
  10931. +   where VALUE is the bits to set or minus the bits to clear.
  10932. +   An empty string NAME is used to identify the default VALUE.  */
  10933. +
  10934. +/* intel1 */
  10935. +#define TARGET_486_SWITCH 2
  10936. +#define TARGET_486 (target_flags & TARGET_486_SWITCH)
  10937. +/* Compile code for a Pentium. intel1 */
  10938. +#define TARGET_PENTIUM_SWITCH 4
  10939. +#define TARGET_PENTIUM (target_flags & TARGET_PENTIUM_SWITCH)
  10940. +/* Compile code for an i386. intel1 */
  10941. +#define TARGET_386_SWITCH 0400
  10942. +#define TARGET_386 (target_flags & TARGET_386_SWITCH)
  10943. +/* Compile code for a Blend. intel1 */
  10944. +#define TARGET_BLEND_SWITCH 02000
  10945. +#define TARGET_BLEND (target_flags & TARGET_BLEND_SWITCH)
  10946. +
  10947. +#define TARGET_X ((TARGET_386) | (TARGET_486) | (TARGET_PENTIUM))
  10948. +#define USE_CPU ((TARGET_X) ? (TARGET_X) : TARGET_CPU_DEFAULT)
  10949. +
  10950. +#define TARGET_SWITCHES  \
  10951. +  { { "80387", 1},                \
  10952. +    { "no-80387", -1},                \
  10953. +    { "soft-float", -1},            \
  10954. +    { "no-soft-float", 1},            \
  10955. +    { "486", 2},                \
  10956. +    { "no-486", -2},                \
  10957. +    { "386", 0400},                \
  10958. +    { "pentium", 4},                \
  10959. +    { "blend", 02000},                \
  10960. +    { "rtd", 8},                \
  10961. +    { "no-rtd", -8},                \
  10962. +    { "regparm", 020},                \
  10963. +    { "no-regparm", -020},            \
  10964. +    { "svr3-shlib", 040},            \
  10965. +    { "no-svr3-shlib", -040},            \
  10966. +    { "ieee-fp", 0100},                \
  10967. +    { "no-ieee-fp", -0100},            \
  10968. +    { "fp-ret-in-387", 0200},            \
  10969. +    { "no-fp-ret-in-387", -0200},        \
  10970. +    SUBTARGET_SWITCHES                          \
  10971. +    { "", TARGET_DEFAULT }}
  10972.  
  10973. -#define OVERRIDE_OPTIONS override_options ()
  10974. -
  10975. -/* These are meant to be redefined in the host dependent files */
  10976. +/* This is meant to be redefined in the host dependent files */
  10977.  #define SUBTARGET_SWITCHES
  10978. -#define SUBTARGET_OPTIONS
  10979.  
  10980.  
  10981. +/* intel1 */
  10982. +
  10983. +#define SUB_TARGET_STRING \
  10984. +(TARGET_PENTIUM ? "Pentium"  : (TARGET_386 ? "Intel386" : "Intel486"))
  10985. +
  10986. +#define SUB_TARGET_VERSION fprintf (stderr, " [%s cpu] ", SUB_TARGET_STRING)
  10987. +
  10988. +
  10989. +/* Define this to change the optimizations performed by default.  */
  10990. +
  10991. +#define OPTIMIZATION_OPTIONS(LEVEL)    \
  10992. +optimization_options(LEVEL)
  10993. +
  10994.  /* target machine storage layout */
  10995.  
  10996.  /* Define for XFmode extended real floating point support.
  10997.     This will automatically cause REAL_ARITHMETIC to be defined.  */
  10998.  #define LONG_DOUBLE_TYPE_SIZE 96
  10999. -
  11000.  /* Define if you don't want extended real, but do want to use the
  11001.     software floating point emulator for REAL_ARITHMETIC and
  11002.     decimal <-> binary conversion. */
  11003.  /* #define REAL_ARITHMETIC */
  11004.  
  11005. +
  11006.  /* Define this if most significant byte of a word is the lowest numbered.  */
  11007.  /* That is true on the 80386.  */
  11008.  
  11009. @@ -250,6 +261,9 @@
  11010.     quantities, but these can be aligned on any 32-bit boundary.  */
  11011.  #define BIGGEST_ALIGNMENT 32
  11012.  
  11013. +/* intel1 - align DFmode constants and nonaggregates */
  11014. +#define ALIGN_DFmode (!TARGET_386)
  11015. +
  11016.  /* Set this non-zero if move instructions will actually fail to work
  11017.     when given unaligned data.  */
  11018.  #define STRICT_ALIGNMENT 0
  11019. @@ -275,6 +289,8 @@
  11020.     for details. */
  11021.  
  11022.  #define STACK_REGS
  11023. +/* intel1 */
  11024. +#define IS_STACK_MODE(mode) (mode==DFmode || mode==SFmode)
  11025.  
  11026.  /* Number of actual hardware registers.
  11027.     The hardware registers are assigned numbers for the compiler
  11028. @@ -312,44 +328,6 @@
  11029.  /*ax,dx,cx,bx,si,di,bp,sp,st,st1,st2,st3,st4,st5,st6,st7,arg*/ \
  11030.  {  1, 1, 1, 0, 0, 0, 0, 1, 1,  1,  1,  1,  1,  1,  1,  1,  1 }
  11031.  
  11032. -/* Order in which to allocate registers.  Each register must be
  11033. -   listed once, even those in FIXED_REGISTERS.  List frame pointer
  11034. -   late and fixed registers last.  Note that, in general, we prefer
  11035. -   registers listed in CALL_USED_REGISTERS, keeping the others
  11036. -   available for storage of persistent values.
  11037. -
  11038. -   Three different versions of REG_ALLOC_ORDER have been tried:
  11039. -
  11040. -   If the order is edx, ecx, eax, ... it produces a slightly faster compiler,
  11041. -   but slower code on simple functions returning values in eax.
  11042. -
  11043. -   If the order is eax, ecx, edx, ... it causes reload to abort when compiling
  11044. -   perl 4.036 due to not being able to create a DImode register (to hold a 2
  11045. -   word union).
  11046. -
  11047. -   If the order is eax, edx, ecx, ... it produces better code for simple
  11048. -   functions, and a slightly slower compiler.  Users complained about the code
  11049. -   generated by allocating edx first, so restore the 'natural' order of things. */
  11050. -
  11051. -#define REG_ALLOC_ORDER \
  11052. -/*ax,dx,cx,bx,si,di,bp,sp,st,st1,st2,st3,st4,st5,st6,st7,arg*/ \
  11053. -{  0, 1, 2, 3, 4, 5, 6, 7, 8,  9, 10, 11, 12, 13, 14, 15, 16 }
  11054. -
  11055. -/* A C statement (sans semicolon) to choose the order in which to
  11056. -   allocate hard registers for pseudo-registers local to a basic
  11057. -   block.
  11058. -
  11059. -   Store the desired register order in the array `reg_alloc_order'.
  11060. -   Element 0 should be the register to allocate first; element 1, the
  11061. -   next register; and so on.
  11062. -
  11063. -   The macro body should not assume anything about the contents of
  11064. -   `reg_alloc_order' before execution of the macro.
  11065. -
  11066. -   On most machines, it is not necessary to define this macro.  */
  11067. -
  11068. -#define ORDER_REGS_FOR_LOCAL_ALLOC order_regs_for_local_alloc ()
  11069. -
  11070.  /* Macro to conditionally modify fixed_regs/call_used_regs.  */
  11071.  #define CONDITIONAL_REGISTER_USAGE            \
  11072.    {                            \
  11073. @@ -391,6 +369,9 @@
  11074.  /* The casts to int placate a compiler on a microvax,
  11075.     for cross-compiler testing.  */
  11076.  
  11077. +/* intel1 - added case of (REGNO)==16 (gbug12)*/
  11078. +/*   : (REGNO) == 16 ? 1                             \ */
  11079. +
  11080.  #define HARD_REGNO_MODE_OK(REGNO, MODE) \
  11081.    ((REGNO) < 2 ? 1                        \
  11082.     : (REGNO) < 4 ? 1                        \
  11083. @@ -462,27 +443,6 @@
  11084.  /* Place in which caller passes the structure value address.
  11085.     0 means push the value on the stack like an argument.  */
  11086.  #define STRUCT_VALUE 0
  11087. -
  11088. -/* A C expression which can inhibit the returning of certain function
  11089. -   values in registers, based on the type of value.  A nonzero value
  11090. -   says to return the function value in memory, just as large
  11091. -   structures are always returned.  Here TYPE will be a C expression
  11092. -   of type `tree', representing the data type of the value.
  11093. -
  11094. -   Note that values of mode `BLKmode' must be explicitly handled by
  11095. -   this macro.  Also, the option `-fpcc-struct-return' takes effect
  11096. -   regardless of this macro.  On most systems, it is possible to
  11097. -   leave the macro undefined; this causes a default definition to be
  11098. -   used, whose value is the constant 1 for `BLKmode' values, and 0
  11099. -   otherwise.
  11100. -
  11101. -   Do not use this macro to indicate that structures and unions
  11102. -   should always be returned in memory.  You should instead use
  11103. -   `DEFAULT_PCC_STRUCT_RETURN' to indicate this.  */
  11104. -
  11105. -#define RETURN_IN_MEMORY(TYPE) \
  11106. -  ((TYPE_MODE (TYPE) == BLKmode) || int_size_in_bytes (TYPE) > 12)
  11107. -
  11108.  
  11109.  /* Define the classes of registers for register constraints in the
  11110.     machine description.  Also define ranges of constants.
  11111. @@ -512,7 +472,6 @@
  11112.  {
  11113.    NO_REGS,
  11114.    AREG, DREG, CREG, BREG,
  11115. -  AD_REGS,            /* %eax/%edx for DImode */
  11116.    Q_REGS,            /* %eax %ebx %ecx %edx */
  11117.    SIREG, DIREG,
  11118.    INDEX_REGS,            /* %eax %ebx %ecx %edx %esi %edi %ebp */
  11119. @@ -531,7 +490,6 @@
  11120.  #define REG_CLASS_NAMES \
  11121.  {  "NO_REGS",                \
  11122.     "AREG", "DREG", "CREG", "BREG",    \
  11123. -   "AD_REGS",                \
  11124.     "Q_REGS",                \
  11125.     "SIREG", "DIREG",            \
  11126.     "INDEX_REGS",            \
  11127. @@ -547,10 +505,9 @@
  11128.  #define REG_CLASS_CONTENTS \
  11129.  {      0,                            \
  11130.       0x1,    0x2,  0x4,     0x8,    /* AREG, DREG, CREG, BREG */    \
  11131. -     0x3,            /* AD_REGS */            \
  11132.       0xf,            /* Q_REGS */            \
  11133.      0x10,   0x20,        /* SIREG, DIREG */        \
  11134. - 0x07f,                /* INDEX_REGS */        \
  11135. + 0x1007f,            /* INDEX_REGS */        \
  11136.   0x100ff,            /* GENERAL_REGS */        \
  11137.    0x0100, 0x0200,        /* FP_TOP_REG, FP_SECOND_REG */    \
  11138.    0xff00,            /* FLOAT_REGS */        \
  11139. @@ -561,6 +518,7 @@
  11140.     reg number REGNO.  This could be a conditional expression
  11141.     or could index an array.  */
  11142.  
  11143. +extern enum reg_class regclass_map[FIRST_PSEUDO_REGISTER];
  11144.  #define REGNO_REG_CLASS(REGNO) (regclass_map[REGNO])
  11145.  
  11146.  /* When defined, the compiler allows registers explicitly used in the
  11147. @@ -618,9 +576,8 @@
  11148.     (C) == 'b' ? BREG :                        \
  11149.     (C) == 'c' ? CREG :                        \
  11150.     (C) == 'd' ? DREG :                        \
  11151. -   (C) == 'A' ? AD_REGS :                    \
  11152.     (C) == 'D' ? DIREG :                        \
  11153. -   (C) == 'S' ? SIREG : NO_REGS)
  11154. +   (C) == 'S' ? SIREG : NO_REGS) /* intel1 changed to e from S */
  11155.  
  11156.  /* The letters I, J, K, L and M in a register constraint string
  11157.     can be used to stand for particular ranges of immediate operands.
  11158. @@ -632,6 +589,7 @@
  11159.     J is for DImode shifts.
  11160.     K and L are for an `andsi' optimization.
  11161.     M is for shifts that can be executed by the "lea" opcode.
  11162. +   O is for block moves intel1
  11163.     */
  11164.  
  11165.  #define CONST_OK_FOR_LETTER_P(VALUE, C)  \
  11166. @@ -640,6 +598,7 @@
  11167.     (C) == 'K' ? (VALUE) == 0xff :        \
  11168.     (C) == 'L' ? (VALUE) == 0xffff :        \
  11169.     (C) == 'M' ? (VALUE) >= 0 && (VALUE) <= 3 :    \
  11170. +   (C) == 'O' ? (VALUE) >= 0 && (VALUE) <= 32 :    \
  11171.     0)
  11172.  
  11173.  /* Similar, but for floating constants, and defining letters G and H.
  11174. @@ -692,33 +651,91 @@
  11175.  #define CLASS_MAX_NREGS(CLASS, MODE)    \
  11176.   (FLOAT_CLASS_P (CLASS) ? 1 :        \
  11177.    ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD))
  11178. +
  11179. +
  11180. +/* A C statement (sans semicolon) to update the integer variable COST
  11181. +   based on the relationship between INSN that is dependent on
  11182. +   DEP_INSN through the dependence LINK.  The default is to make no
  11183. +   adjustment to COST.  */
  11184. +#define ADJUST_COST(insn,link,dep_insn,cost)                \
  11185. +  {                                    \
  11186. +    rtx next_inst;                            \
  11187. +    if (GET_CODE (dep_insn) == CALL_INSN)                \
  11188. +      (cost) = 0;                            \
  11189. +        if (GET_CODE (dep_insn) == INSN                    \
  11190. +            && GET_CODE (PATTERN (dep_insn)) == SET            \
  11191. +            && GET_CODE (SET_DEST (PATTERN (dep_insn))) == REG        \
  11192. +            && GET_CODE (insn) == INSN                    \
  11193. +            && GET_CODE (PATTERN (insn)) == SET                \
  11194. +            && !reg_overlap_mentioned_p (SET_DEST (PATTERN (dep_insn)),    \
  11195. +                                         SET_SRC (PATTERN (insn))))    \
  11196. +          {                                \
  11197. +            (cost) = 0;                            \
  11198. +          }                                \
  11199. +    if (GET_CODE (insn) == JUMP_INSN)                    \
  11200. +      {                                    \
  11201. +        (cost) = 0;                            \
  11202. +      }                                    \
  11203. +    if (TARGET_PENTIUM)                            \
  11204. +      {                                    \
  11205. +        if (cost !=0 && is_fp_insn (insn) && is_fp_insn (dep_insn)     \
  11206. +            && !is_fp_dest (dep_insn))                    \
  11207. +          {                                \
  11208. +            (cost) = 0;                            \
  11209. +          }                                \
  11210. +        if (agi_dependent (insn, dep_insn))                \
  11211. +          {                                \
  11212. +            (cost) = 3;                            \
  11213. +          }                                \
  11214. +        else if (GET_CODE (insn) == INSN                 \
  11215. +                 && GET_CODE (PATTERN (insn)) == SET            \
  11216. +                 && SET_DEST (PATTERN (insn)) == cc0_rtx        \
  11217. +                 && (next_inst = next_nonnote_insn (insn))        \
  11218. +                 && GET_CODE (next_inst) == JUMP_INSN)            \
  11219. +          { /* compare probably paired with jump */            \
  11220. +            (cost) = 0;                            \
  11221. +          }                                \
  11222. +      }                                    \
  11223. +    else                                \
  11224. +    if(!is_fp_dest (dep_insn))                        \
  11225. +      {                                    \
  11226. +        if(!agi_dependent (insn, dep_insn))                \
  11227. +          (cost) = 0;                            \
  11228. +         else if (TARGET_486)                        \
  11229. +           (cost) = 2;                            \
  11230. +      }                                    \
  11231. +    else                                \
  11232. +    if(is_fp_store (insn) && is_fp_insn (dep_insn)            \
  11233. +       && NEXT_INSN (insn) && NEXT_INSN (NEXT_INSN (insn))        \
  11234. +       && NEXT_INSN (NEXT_INSN (NEXT_INSN (insn)))            \
  11235. +       && (GET_CODE (NEXT_INSN (insn)) == INSN)                \
  11236. +       && (GET_CODE (NEXT_INSN (NEXT_INSN (insn))) == JUMP_INSN)    \
  11237. +       && (GET_CODE (NEXT_INSN (NEXT_INSN (NEXT_INSN (insn))))         \
  11238. +            == NOTE)                            \
  11239. +       && NOTE_LINE_NUMBER (NEXT_INSN (NEXT_INSN (NEXT_INSN (insn))))     \
  11240. +           == NOTE_INSN_LOOP_END)                    \
  11241. +      {                                    \
  11242. +           (cost) = 3;                            \
  11243. +      }                                    \
  11244. +  }                                    
  11245.  
  11246. -/* A C expression whose value is nonzero if pseudos that have been
  11247. -   assigned to registers of class CLASS would likely be spilled
  11248. -   because registers of CLASS are needed for spill registers.
  11249. -
  11250. -   The default value of this macro returns 1 if CLASS has exactly one
  11251. -   register and zero otherwise.  On most machines, this default
  11252. -   should be used.  Only define this macro to some other expression
  11253. -   if pseudo allocated by `local-alloc.c' end up in memory because
  11254. -   their hard registers were needed for spill regisers.  If this
  11255. -   macro returns nonzero for those classes, those pseudos will only
  11256. -   be allocated by `global.c', which knows how to reallocate the
  11257. -   pseudo to another register.  If there would not be another
  11258. -   register available for reallocation, you should not change the
  11259. -   definition of this macro since the only effect of such a
  11260. -   definition would be to slow down register allocation.  */
  11261. -
  11262. -#define CLASS_LIKELY_SPILLED_P(CLASS)                    \
  11263. -  (((CLASS) == AREG)                            \
  11264. -   || ((CLASS) == DREG)                            \
  11265. -   || ((CLASS) == CREG)                            \
  11266. -   || ((CLASS) == BREG)                            \
  11267. -   || ((CLASS) == AD_REGS)                        \
  11268. -   || ((CLASS) == SIREG)                        \
  11269. -   || ((CLASS) == DIREG))
  11270.  
  11271. -
  11272. +#define ADJUST_BLOCKAGE(last_insn,insn,blockage)            \
  11273. +  {                                    \
  11274. +    if(is_fp_store (last_insn) && is_fp_insn (insn)            \
  11275. +       && NEXT_INSN (last_insn) && NEXT_INSN (NEXT_INSN (last_insn))    \
  11276. +       && NEXT_INSN (NEXT_INSN (NEXT_INSN (last_insn)))            \
  11277. +       && (GET_CODE (NEXT_INSN (last_insn)) == INSN)            \
  11278. +       && (GET_CODE (NEXT_INSN (NEXT_INSN (last_insn))) == JUMP_INSN)    \
  11279. +       && (GET_CODE (NEXT_INSN (NEXT_INSN (NEXT_INSN (last_insn))))     \
  11280. +            == NOTE)                            \
  11281. +       && NOTE_LINE_NUMBER (NEXT_INSN (NEXT_INSN (NEXT_INSN (last_insn))))     \
  11282. +           == NOTE_INSN_LOOP_END)                    \
  11283. +      {                                    \
  11284. +           (blockage) = 3;                        \
  11285. +      }                                    \
  11286. +  }                                    
  11287. +
  11288.  /* Stack layout; function entry, exit and calling.  */
  11289.  
  11290.  /* Define this if pushing a word on the stack
  11291. @@ -889,102 +906,6 @@
  11292.      }                                    \
  11293.  }
  11294.  
  11295. -/* A C statement or compound statement to output to FILE some
  11296. -   assembler code to initialize basic-block profiling for the current
  11297. -   object module.  This code should call the subroutine
  11298. -   `__bb_init_func' once per object module, passing it as its sole
  11299. -   argument the address of a block allocated in the object module.
  11300. -
  11301. -   The name of the block is a local symbol made with this statement:
  11302. -
  11303. -    ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 0);
  11304. -
  11305. -   Of course, since you are writing the definition of
  11306. -   `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you
  11307. -   can take a short cut in the definition of this macro and use the
  11308. -   name that you know will result.
  11309. -
  11310. -   The first word of this block is a flag which will be nonzero if the
  11311. -   object module has already been initialized.  So test this word
  11312. -   first, and do not call `__bb_init_func' if the flag is nonzero.  */
  11313. -
  11314. -#undef    FUNCTION_BLOCK_PROFILER
  11315. -#define FUNCTION_BLOCK_PROFILER(STREAM, LABELNO)            \
  11316. -do                                    \
  11317. -  {                                    \
  11318. -    static int num_func = 0;                        \
  11319. -    rtx xops[8];                            \
  11320. -    char block_table[80], false_label[80];                \
  11321. -                                    \
  11322. -    ASM_GENERATE_INTERNAL_LABEL (block_table, "LPBX", 0);        \
  11323. -    ASM_GENERATE_INTERNAL_LABEL (false_label, "LPBZ", num_func);    \
  11324. -                                    \
  11325. -    xops[0] = const0_rtx;                        \
  11326. -    xops[1] = gen_rtx (SYMBOL_REF, VOIDmode, block_table);        \
  11327. -    xops[2] = gen_rtx (MEM, Pmode, gen_rtx (SYMBOL_REF, VOIDmode, false_label)); \
  11328. -    xops[3] = gen_rtx (MEM, Pmode, gen_rtx (SYMBOL_REF, VOIDmode, "__bb_init_func")); \
  11329. -    xops[4] = gen_rtx (MEM, Pmode, xops[1]);                \
  11330. -    xops[5] = stack_pointer_rtx;                    \
  11331. -    xops[6] = GEN_INT (4);                        \
  11332. -    xops[7] = gen_rtx (REG, Pmode, 0);    /* eax */            \
  11333. -                                    \
  11334. -    CONSTANT_POOL_ADDRESS_P (xops[1]) = TRUE;                \
  11335. -    CONSTANT_POOL_ADDRESS_P (xops[2]) = TRUE;                \
  11336. -                                    \
  11337. -    output_asm_insn (AS2(cmp%L4,%0,%4), xops);                \
  11338. -    output_asm_insn (AS1(jne,%2), xops);                \
  11339. -                                    \
  11340. -    if (!flag_pic)                            \
  11341. -      output_asm_insn (AS1(push%L1,%1), xops);                \
  11342. -    else                                \
  11343. -      {                                    \
  11344. -    output_asm_insn (AS2 (lea%L7,%a1,%7), xops);            \
  11345. -    output_asm_insn (AS1 (push%L7,%7), xops);            \
  11346. -      }                                    \
  11347. -                                    \
  11348. -    output_asm_insn (AS1(call,%P3), xops);                \
  11349. -    output_asm_insn (AS2(add%L0,%6,%5), xops);                \
  11350. -    ASM_OUTPUT_INTERNAL_LABEL (STREAM, "LPBZ", num_func);        \
  11351. -    num_func++;                                \
  11352. -  }                                    \
  11353. -while (0)
  11354. -
  11355. -
  11356. -/* A C statement or compound statement to increment the count
  11357. -   associated with the basic block number BLOCKNO.  Basic blocks are
  11358. -   numbered separately from zero within each compilation.  The count
  11359. -   associated with block number BLOCKNO is at index BLOCKNO in a
  11360. -   vector of words; the name of this array is a local symbol made
  11361. -   with this statement:
  11362. -
  11363. -    ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 2);
  11364. -
  11365. -   Of course, since you are writing the definition of
  11366. -   `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you
  11367. -   can take a short cut in the definition of this macro and use the
  11368. -   name that you know will result.  */
  11369. -
  11370. -#define BLOCK_PROFILER(STREAM, BLOCKNO)                    \
  11371. -do                                    \
  11372. -  {                                    \
  11373. -    rtx xops[1], cnt_rtx;                        \
  11374. -    char counts[80];                            \
  11375. -                                    \
  11376. -    ASM_GENERATE_INTERNAL_LABEL (counts, "LPBX", 2);            \
  11377. -    cnt_rtx = gen_rtx (SYMBOL_REF, VOIDmode, counts);            \
  11378. -    SYMBOL_REF_FLAG (cnt_rtx) = TRUE;                    \
  11379. -                                    \
  11380. -    if (BLOCKNO)                            \
  11381. -      cnt_rtx = plus_constant (cnt_rtx, (BLOCKNO)*4);            \
  11382. -                                    \
  11383. -    if (flag_pic)                            \
  11384. -      cnt_rtx = gen_rtx (PLUS, Pmode, pic_offset_table_rtx, cnt_rtx);    \
  11385. -                                    \
  11386. -    xops[0] = gen_rtx (MEM, SImode, cnt_rtx);                \
  11387. -    output_asm_insn (AS1(inc%L0,%0), xops);                \
  11388. -  }                                    \
  11389. -while (0)
  11390. -
  11391.  /* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
  11392.     the stack pointer does not matter.  The value is tested only in
  11393.     functions that have frame pointers.
  11394. @@ -1148,35 +1069,36 @@
  11395.     After reload, it makes no difference, since pseudo regs have
  11396.     been eliminated by then.  */
  11397.  
  11398. +#ifndef REG_OK_STRICT
  11399. +
  11400. +/* Nonzero if X is a hard reg that can be used as an index or if
  11401. +   it is a pseudo reg.  */
  11402.  
  11403. -/* Non strict versions, pseudos are ok */
  11404. -#define REG_OK_FOR_INDEX_NONSTRICT_P(X)                    \
  11405. -  (REGNO (X) < STACK_POINTER_REGNUM                    \
  11406. +#define REG_OK_FOR_INDEX_P(X) \
  11407. +  (REGNO (X) < STACK_POINTER_REGNUM \
  11408.     || REGNO (X) >= FIRST_PSEUDO_REGISTER)
  11409.  
  11410. -#define REG_OK_FOR_BASE_NONSTRICT_P(X)                    \
  11411. -  (REGNO (X) <= STACK_POINTER_REGNUM                    \
  11412. -   || REGNO (X) == ARG_POINTER_REGNUM                    \
  11413. -   || REGNO (X) >= FIRST_PSEUDO_REGISTER)
  11414. +/* Nonzero if X is a hard reg that can be used as a base reg
  11415. +   of if it is a pseudo reg.  */
  11416. +  /* ?wfs */
  11417. +
  11418. +#define REG_OK_FOR_BASE_P(X) \
  11419. +  (REGNO (X) <= STACK_POINTER_REGNUM \
  11420. +   || REGNO (X) == ARG_POINTER_REGNUM \
  11421. +   || REGNO(X) >= FIRST_PSEUDO_REGISTER)
  11422.  
  11423. -#define REG_OK_FOR_STRREG_NONSTRICT_P(X)                \
  11424. +#define REG_OK_FOR_STRREG_P(X) \
  11425.    (REGNO (X) == 4 || REGNO (X) == 5 || REGNO (X) >= FIRST_PSEUDO_REGISTER)
  11426.  
  11427. -/* Strict versions, hard registers only */
  11428. -#define REG_OK_FOR_INDEX_STRICT_P(X) REGNO_OK_FOR_INDEX_P (REGNO (X))
  11429. -#define REG_OK_FOR_BASE_STRICT_P(X)  REGNO_OK_FOR_BASE_P (REGNO (X))
  11430. -#define REG_OK_FOR_STRREG_STRICT_P(X)                    \
  11431. -  (REGNO_OK_FOR_DIREG_P (REGNO (X)) || REGNO_OK_FOR_SIREG_P (REGNO (X)))
  11432. +#else
  11433.  
  11434. -#ifndef REG_OK_STRICT
  11435. -#define REG_OK_FOR_INDEX_P(X)  REG_OK_FOR_INDEX_NONSTRICT_P(X)
  11436. -#define REG_OK_FOR_BASE_P(X)   REG_OK_FOR_BASE_NONSTRICT_P(X)
  11437. -#define REG_OK_FOR_STRREG_P(X) REG_OK_FOR_STRREG_NONSTRICT_P(X)
  11438. +/* Nonzero if X is a hard reg that can be used as an index.  */
  11439. +#define REG_OK_FOR_INDEX_P(X) REGNO_OK_FOR_INDEX_P (REGNO (X))
  11440. +/* Nonzero if X is a hard reg that can be used as a base reg.  */
  11441. +#define REG_OK_FOR_BASE_P(X) REGNO_OK_FOR_BASE_P (REGNO (X))
  11442. +#define REG_OK_FOR_STRREG_P(X) \
  11443. +  (REGNO_OK_FOR_DIREG_P (REGNO (X)) || REGNO_OK_FOR_SIREG_P (REGNO (X)))
  11444.  
  11445. -#else
  11446. -#define REG_OK_FOR_INDEX_P(X)  REG_OK_FOR_INDEX_STRICT_P(X)
  11447. -#define REG_OK_FOR_BASE_P(X)   REG_OK_FOR_BASE_STRICT_P(X)
  11448. -#define REG_OK_FOR_STRREG_P(X) REG_OK_FOR_STRREG_STRICT_P(X)
  11449.  #endif
  11450.  
  11451.  /* GO_IF_LEGITIMATE_ADDRESS recognizes an RTL expression
  11452. @@ -1202,22 +1124,62 @@
  11453.  
  11454.  #define LEGITIMATE_CONSTANT_P(X) 1
  11455.  
  11456. -#ifdef REG_OK_STRICT
  11457. -#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR)                \
  11458. -{                                    \
  11459. -  if (legitimate_address_p (MODE, X, 1))                \
  11460. -    goto ADDR;                                \
  11461. -}
  11462. +#define GO_IF_INDEXABLE_BASE(X, ADDR)    \
  11463. + if (GET_CODE (X) == REG && REG_OK_FOR_BASE_P (X)) goto ADDR
  11464.  
  11465. -#else
  11466. -#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR)                \
  11467. +#define LEGITIMATE_INDEX_REG_P(X)   \
  11468. +  (GET_CODE (X) == REG && REG_OK_FOR_INDEX_P (X))
  11469. +
  11470. +/* Return 1 if X is an index or an index times a scale.  */
  11471. +
  11472. +#define LEGITIMATE_INDEX_P(X)   \
  11473. +   (LEGITIMATE_INDEX_REG_P (X)                \
  11474. +    || (GET_CODE (X) == MULT                \
  11475. +    && LEGITIMATE_INDEX_REG_P (XEXP (X, 0))        \
  11476. +    && GET_CODE (XEXP (X, 1)) == CONST_INT        \
  11477. +    && (INTVAL (XEXP (X, 1)) == 2            \
  11478. +        || INTVAL (XEXP (X, 1)) == 4        \
  11479. +        || INTVAL (XEXP (X, 1)) == 8)))
  11480. +
  11481. +/* Go to ADDR if X is an index term, a base reg, or a sum of those.  */
  11482. +
  11483. +#define GO_IF_INDEXING(X, ADDR)    \
  11484. +{ if (LEGITIMATE_INDEX_P (X)) goto ADDR;                \
  11485. +  GO_IF_INDEXABLE_BASE (X, ADDR);                    \
  11486. +  if (GET_CODE (X) == PLUS && LEGITIMATE_INDEX_P (XEXP (X, 0)))        \
  11487. +    { GO_IF_INDEXABLE_BASE (XEXP (X, 1), ADDR); }            \
  11488. +  if (GET_CODE (X) == PLUS && LEGITIMATE_INDEX_P (XEXP (X, 1)))        \
  11489. +    { GO_IF_INDEXABLE_BASE (XEXP (X, 0), ADDR); } }
  11490. +
  11491. +/* We used to allow this, but it isn't ever used.
  11492. +   || ((GET_CODE (X) == POST_DEC || GET_CODE (X) == POST_INC)        \
  11493. +       && REG_P (XEXP (X, 0))                        \
  11494. +       && REG_OK_FOR_STRREG_P (XEXP (X, 0)))                \
  11495. +*/
  11496. +
  11497. +#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR)    \
  11498.  {                                    \
  11499. -  if (legitimate_address_p (MODE, X, 0))                \
  11500. +  if (CONSTANT_ADDRESS_P (X)                        \
  11501. +      && (! flag_pic || LEGITIMATE_PIC_OPERAND_P (X)))            \
  11502.      goto ADDR;                                \
  11503. +  GO_IF_INDEXING (X, ADDR);                        \
  11504. +  if (GET_CODE (X) == PLUS && CONSTANT_ADDRESS_P (XEXP (X, 1)))        \
  11505. +    {                                    \
  11506. +      rtx x0 = XEXP (X, 0);                        \
  11507. +      if (! flag_pic || ! SYMBOLIC_CONST (XEXP (X, 1)))            \
  11508. +    { GO_IF_INDEXING (x0, ADDR); }                    \
  11509. +      else if (x0 == pic_offset_table_rtx)                \
  11510. +    goto ADDR;                            \
  11511. +      else if (GET_CODE (x0) == PLUS)                    \
  11512. +    {                                \
  11513. +      if (XEXP (x0, 0) == pic_offset_table_rtx)            \
  11514. +        { GO_IF_INDEXABLE_BASE (XEXP (x0, 1), ADDR); }        \
  11515. +      if (XEXP (x0, 1) == pic_offset_table_rtx)            \
  11516. +        { GO_IF_INDEXABLE_BASE (XEXP (x0, 0), ADDR); }        \
  11517. +    }                                \
  11518. +    }                                    \
  11519.  }
  11520.  
  11521. -#endif
  11522. -
  11523.  /* Try machine-dependent ways of modifying an illegitimate address
  11524.     to be legitimate.  If we find one, return the new, valid address.
  11525.     This macro is used in only one place: `memory_address' in explow.c.
  11526. @@ -1239,13 +1201,41 @@
  11527.     When -fpic is used, special handling is needed for symbolic references.
  11528.     See comments by legitimize_pic_address in i386.c for details.  */
  11529.  
  11530. -#define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN)                \
  11531. -{                                    \
  11532. -  rtx orig_x = (X);                            \
  11533. -  (X) = legitimize_address (X, OLDX, MODE);                \
  11534. -  if (memory_address_p (MODE, X))                    \
  11535. -    goto WIN;                                \
  11536. -}
  11537. +#define LEGITIMIZE_ADDRESS(X,OLDX,MODE,WIN)   \
  11538. +{ extern rtx legitimize_pic_address ();                    \
  11539. +  int ch = (X) != (OLDX);                        \
  11540. +  if (flag_pic && SYMBOLIC_CONST (X))                    \
  11541. +    {                                    \
  11542. +      (X) = legitimize_pic_address (X, 0);                \
  11543. +      if (memory_address_p (MODE, X))                    \
  11544. +    goto WIN;                            \
  11545. +    }                                    \
  11546. +  if (GET_CODE (X) == PLUS)                        \
  11547. +    { if (GET_CODE (XEXP (X, 0)) == MULT)                \
  11548. +    ch = 1, XEXP (X, 0) = force_operand (XEXP (X, 0), 0);        \
  11549. +      if (GET_CODE (XEXP (X, 1)) == MULT)                \
  11550. +    ch = 1, XEXP (X, 1) = force_operand (XEXP (X, 1), 0);        \
  11551. +      if (ch && GET_CODE (XEXP (X, 1)) == REG                \
  11552. +      && GET_CODE (XEXP (X, 0)) == REG)                \
  11553. +    goto WIN;                            \
  11554. +      if (flag_pic && SYMBOLIC_CONST (XEXP (X, 1)))            \
  11555. +        ch = 1, (X) = legitimize_pic_address (X, 0);            \
  11556. +      if (ch) { GO_IF_LEGITIMATE_ADDRESS (MODE, X, WIN); }        \
  11557. +      if (GET_CODE (XEXP (X, 0)) == REG)                                \
  11558. +    { register rtx temp = gen_reg_rtx (Pmode);            \
  11559. +      register rtx val = force_operand (XEXP (X, 1), temp);        \
  11560. +      if (val != temp) emit_move_insn (temp, val);            \
  11561. +      XEXP (X, 1) = temp;                        \
  11562. +      goto WIN; }                            \
  11563. +      else if (GET_CODE (XEXP (X, 1)) == REG)                \
  11564. +    { register rtx temp = gen_reg_rtx (Pmode);            \
  11565. +      register rtx val = force_operand (XEXP (X, 0), temp);        \
  11566. +      if (val != temp) emit_move_insn (temp, val);            \
  11567. +      XEXP (X, 0) = temp;                        \
  11568. +      goto WIN; }}}
  11569. +
  11570. +/* intel1 */
  11571. +#define REWRITE_ADDRESS(x) rewrite_address(x)
  11572.  
  11573.  /* Nonzero if the constant value X is a legitimate general operand
  11574.     when generating PIC code.  It is given that flag_pic is on and 
  11575. @@ -1348,6 +1338,10 @@
  11576.  /* Nonzero if access to memory by bytes is slow and undesirable.  */
  11577.  #define SLOW_BYTE_ACCESS 0
  11578.  
  11579. +/* intel1 */
  11580. +/* Nonzero if access to memory by shorts is slow and undesirable.  */
  11581. +#define SLOW_SHORT_ACCESS 1
  11582. +
  11583.  /* Define if shifts truncate the shift count
  11584.     which implies one can omit a sign-extension or zero-extension
  11585.     of a shift count.  */
  11586. @@ -1469,6 +1463,7 @@
  11587.     stored from the compare operation.  Note that we can't use "rtx" here
  11588.     since it hasn't been defined!  */
  11589.  
  11590. +extern struct rtx_def *i386_compare_op0, *i386_compare_op1;
  11591.  extern struct rtx_def *(*i386_compare_gen)(), *(*i386_compare_gen_eq)();
  11592.  
  11593.  /* Tell final.c how to eliminate redundant test instructions.  */
  11594. @@ -1476,6 +1471,10 @@
  11595.  /* Here we define machine-dependent flags and fields in cc_status
  11596.     (see `conditions.h').  */
  11597.  
  11598. +/* intel1 Set if the cc value is was actually from the 80387 and
  11599. +   we are testing eax directly (i.e. no sahf) */
  11600. +#define CC_TEST_AX 020000
  11601. +
  11602.  /* Set if the cc value is actually in the 80387, so a floating point
  11603.     conditional branch must be output.  */
  11604.  #define CC_IN_80387 04000
  11605. @@ -1773,12 +1772,12 @@
  11606.       { fputs ("argp", FILE); break; }        \
  11607.         if (STACK_TOP_P (X))                \
  11608.       { fputs ("st(0)", FILE); break; }        \
  11609. -       if (FP_REG_P (X))                \
  11610. -     { fputs (hi_name[REGNO(X)], FILE); break; }    \
  11611.         switch (GET_MODE_SIZE (GET_MODE (X)))        \
  11612.       {                        \
  11613. -     default:                    \
  11614. -       fputs ("e", FILE);                \
  11615. +     case 12:                    \
  11616. +     case 8:                    \
  11617. +     case 4:                    \
  11618. +       if (! FP_REG_P (X)) fputs ("e", FILE);    \
  11619.       case 2:                    \
  11620.         fputs (hi_name[REGNO (X)], FILE);        \
  11621.         break;                    \
  11622. @@ -1813,60 +1812,6 @@
  11623.  
  11624.  #define RET return ""
  11625.  #define AT_SP(mode) (gen_rtx (MEM, (mode), stack_pointer_rtx))
  11626. -
  11627. -/* Functions in i386.c */
  11628. -extern void override_options ();
  11629. -extern void order_regs_for_local_alloc ();
  11630. -extern void output_op_from_reg ();
  11631. -extern void output_to_reg ();
  11632. -extern char *singlemove_string ();
  11633. -extern char *output_move_double ();
  11634. -extern char *output_move_memory ();
  11635. -extern char *output_move_pushmem ();
  11636. -extern int standard_80387_constant_p ();
  11637. -extern char *output_move_const_single ();
  11638. -extern int symbolic_operand ();
  11639. -extern int call_insn_operand ();
  11640. -extern int expander_call_insn_operand ();
  11641. -extern int symbolic_reference_mentioned_p ();
  11642. -extern void emit_pic_move ();
  11643. -extern void function_prologue ();
  11644. -extern int simple_386_epilogue ();
  11645. -extern void function_epilogue ();
  11646. -extern int legitimate_address_p ();
  11647. -extern struct rtx_def *legitimize_pic_address ();
  11648. -extern struct rtx_def *legitimize_address ();
  11649. -extern void print_operand ();
  11650. -extern void print_operand_address ();
  11651. -extern void notice_update_cc ();
  11652. -extern void split_di ();
  11653. -extern int binary_387_op ();
  11654. -extern int shift_op ();
  11655. -extern int VOIDmode_compare_op ();
  11656. -extern char *output_387_binary_op ();
  11657. -extern char *output_fix_trunc ();
  11658. -extern char *output_float_compare ();
  11659. -extern char *output_fp_cc0_set ();
  11660. -extern void save_386_machine_status ();
  11661. -extern void restore_386_machine_status ();
  11662. -extern void clear_386_stack_locals ();
  11663. -extern struct rtx_def *assign_386_stack_local ();
  11664. -
  11665. -/* Variables in i386.c */
  11666. -extern char *i386_reg_alloc_order;        /* register allocation order */
  11667. -extern char *hi_reg_name[];            /* names for 16 bit regs */
  11668. -extern char *qi_reg_name[];            /* names for 8 bit regs (low) */
  11669. -extern char *qi_high_reg_name[];        /* names for 8 bit regs (high) */
  11670. -extern enum reg_class regclass_map[];        /* smalled class containing REGNO */
  11671. -extern struct rtx_def *i386_compare_op0;    /* operand 0 for comparisons */
  11672. -extern struct rtx_def *i386_compare_op1;    /* operand 1 for comparisons */
  11673. -
  11674. -/* External variables used */
  11675. -extern int optimize;            /* optimization level */
  11676. -extern int obey_regdecls;        /* TRUE if stupid register allocation */
  11677. -
  11678. -/* External functions used */
  11679. -extern struct rtx_def *force_operand ();
  11680.  
  11681.  /*
  11682.  Local variables:
  11683. diff -r -u -H -N gcc-2.6.3/config/i386/i386.md gcc-i2.6.3/config/i386/i386.md
  11684. --- gcc-2.6.3/config/i386/i386.md    Mon Oct 31 16:16:33 1994
  11685. +++ gcc-i2.6.3/config/i386/i386.md    Wed Feb 15 23:08:02 1995
  11686. @@ -1,7 +1,10 @@
  11687.  ;; GCC machine description for Intel X86.
  11688. -;; Copyright (C) 1988, 1994 Free Software Foundation, Inc.
  11689. +;; Copyright (C) 1988 Free Software Foundation, Inc.
  11690.  ;; Mostly by William Schelter.
  11691.  
  11692. +;; Pentium cpu support and other enhancements by Tevi Devor Intel Corp.
  11693. +;; (tevi@iil.intel.com).
  11694. +
  11695.  ;; This file is part of GNU CC.
  11696.  
  11697.  ;; GNU CC is free software; you can redistribute it and/or modify
  11698. @@ -70,6 +73,36 @@
  11699.  ;; actually generating RTL.  The bCOND or sCOND (emitted immediately
  11700.  ;; after the tstM or cmp) will actually emit the tstM or cmpM.
  11701.  
  11702. +;intel1
  11703. +(define_attr "type" "fld,integer,fpop,fpdiv"
  11704. +  (const_string "integer"))
  11705. +
  11706. +;; Functional units intel1
  11707. +(define_function_unit "fp" 1 0
  11708. + (and (eq_attr "type" "fpop") 
  11709. +      (ne (symbol_ref "x86_cpu") (symbol_ref "PROCESSOR_PENTIUM")))
  11710. + 5 5)
  11711. +
  11712. +(define_function_unit "fp" 1 0
  11713. + (and (eq_attr "type" "fpop") 
  11714. +      (eq (symbol_ref "x86_cpu") (symbol_ref "PROCESSOR_PENTIUM")))
  11715. + 3 0)
  11716. +
  11717. +(define_function_unit "fp" 1 0
  11718. + (eq_attr "type" "fpdiv") 
  11719. + 10 10)
  11720. +
  11721. +(define_function_unit "fp" 1 0
  11722. + (eq_attr "type" "fld") 
  11723. + 1 0)
  11724. +
  11725. +(define_function_unit "integer" 1 0
  11726. + (and (eq_attr "type" "integer") 
  11727. +      (ne (symbol_ref "x86_cpu") (symbol_ref "PROCESSOR_386")))
  11728. + 2 0)
  11729. +
  11730. +
  11731. +
  11732.  (define_insn "tstsi_1"
  11733.    [(set (cc0)
  11734.      (match_operand:SI 0 "nonimmediate_operand" "rm"))]
  11735. @@ -142,104 +175,105 @@
  11736.    DONE;
  11737.  }")
  11738.  
  11739. -(define_insn "tstsf_cc"
  11740. -  [(set (cc0)
  11741. -    (match_operand:SF 0 "register_operand" "f"))
  11742. -   (clobber (match_scratch:HI 1 "=a"))]
  11743. -  "TARGET_80387 && ! TARGET_IEEE_FP"
  11744. -  "*
  11745. -{
  11746. -  if (! STACK_TOP_P (operands[0]))
  11747. -    abort ();
  11748. -
  11749. -  output_asm_insn (\"ftst\", operands);
  11750. -
  11751. -  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  11752. -    output_asm_insn (AS1 (fstp,%y0), operands);
  11753. -
  11754. -  return output_fp_cc0_set (insn);
  11755. -}")
  11756. -
  11757. -;; Don't generate tstsf if generating IEEE code, since the `ftst' opcode
  11758. -;; isn't IEEE compliant.
  11759. -
  11760. -(define_expand "tstsf"
  11761. -  [(parallel [(set (cc0)
  11762. -           (match_operand:SF 0 "register_operand" ""))
  11763. -          (clobber (match_scratch:HI 1 ""))])]
  11764. -  "TARGET_80387 && ! TARGET_IEEE_FP"
  11765. -  "
  11766. -{
  11767. -  i386_compare_gen = gen_tstsf_cc;
  11768. -  i386_compare_op0 = operands[0];
  11769. -  DONE;
  11770. -}")
  11771. -
  11772. -(define_insn "tstdf_cc"
  11773. -  [(set (cc0)
  11774. -    (match_operand:DF 0 "register_operand" "f"))
  11775. -   (clobber (match_scratch:HI 1 "=a"))]
  11776. -  "TARGET_80387 && ! TARGET_IEEE_FP"
  11777. -  "*
  11778. -{
  11779. -  if (! STACK_TOP_P (operands[0]))
  11780. -    abort ();
  11781. -
  11782. -  output_asm_insn (\"ftst\", operands);
  11783. -
  11784. -  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  11785. -    output_asm_insn (AS1 (fstp,%y0), operands);
  11786. -
  11787. -  return output_fp_cc0_set (insn);
  11788. -}")
  11789. -
  11790. -;; Don't generate tstdf if generating IEEE code, since the `ftst' opcode
  11791. -;; isn't IEEE compliant.
  11792. -
  11793. -(define_expand "tstdf"
  11794. -  [(parallel [(set (cc0)
  11795. -           (match_operand:DF 0 "register_operand" ""))
  11796. -          (clobber (match_scratch:HI 1 ""))])]
  11797. -  "TARGET_80387 && ! TARGET_IEEE_FP"
  11798. -  "
  11799. -{
  11800. -  i386_compare_gen = gen_tstdf_cc;
  11801. -  i386_compare_op0 = operands[0];
  11802. -  DONE;
  11803. -}")
  11804. -
  11805. -(define_insn "tstxf_cc"
  11806. -  [(set (cc0)
  11807. -    (match_operand:XF 0 "register_operand" "f"))
  11808. -   (clobber (match_scratch:HI 1 "=a"))]
  11809. -  "TARGET_80387 && ! TARGET_IEEE_FP"
  11810. -  "*
  11811. -{
  11812. -  if (! STACK_TOP_P (operands[0]))
  11813. -    abort ();
  11814. -
  11815. -  output_asm_insn (\"ftst\", operands);
  11816. -
  11817. -  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  11818. -    output_asm_insn (AS1 (fstp,%y0), operands);
  11819. -
  11820. -  return output_fp_cc0_set (insn);
  11821. -}")
  11822. -
  11823. -;; Don't generate tstdf if generating IEEE code, since the `ftst' opcode
  11824. -;; isn't IEEE compliant.
  11825. -
  11826. -(define_expand "tstxf"
  11827. -  [(parallel [(set (cc0)
  11828. -           (match_operand:XF 0 "register_operand" ""))
  11829. -          (clobber (match_scratch:HI 1 ""))])]
  11830. -  "TARGET_80387 && ! TARGET_IEEE_FP"
  11831. -  "
  11832. -{
  11833. -  i386_compare_gen = gen_tstxf_cc;
  11834. -  i386_compare_op0 = operands[0];
  11835. -  DONE;
  11836. -}")
  11837. +;; intel1
  11838. +;;(define_insn "tstsf_cc"
  11839. +;;  [(set (cc0)
  11840. +;;    (match_operand:SF 0 "register_operand" "f"))
  11841. +;;   (clobber (match_scratch:HI 1 "=a"))]
  11842. +;;  "TARGET_80387 && ! TARGET_IEEE_FP"
  11843. +;;  "*
  11844. +;;{
  11845. +;;  if (! STACK_TOP_P (operands[0]))
  11846. +;;    abort ();
  11847. +;;
  11848. +;;  output_asm_insn (\"ftst\", operands);
  11849. +;;
  11850. +;;  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  11851. +;;    output_asm_insn (AS1 (fstp,%y0), operands);
  11852. +;;
  11853. +;;  return (char *) output_fp_cc0_set (insn);
  11854. +;;}")
  11855. +;;
  11856. +;;;; Don't generate tstsf if generating IEEE code, since the `ftst' opcode
  11857. +;;;; isn't IEEE compliant.
  11858. +;;
  11859. +;;(define_expand "tstsf"
  11860. +;;  [(parallel [(set (cc0)
  11861. +;;           (match_operand:SF 0 "register_operand" ""))
  11862. +;;          (clobber (match_scratch:HI 1 ""))])]
  11863. +;;  "TARGET_80387 && ! TARGET_IEEE_FP"
  11864. +;;  "
  11865. +;;{
  11866. +;;  i386_compare_gen = gen_tstsf_cc;
  11867. +;;  i386_compare_op0 = operands[0];
  11868. +;;  DONE;
  11869. +;;}")
  11870. +;;
  11871. +;;(define_insn "tstdf_cc"
  11872. +;;  [(set (cc0)
  11873. +;;    (match_operand:DF 0 "register_operand" "f"))
  11874. +;;   (clobber (match_scratch:HI 1 "=a"))]
  11875. +;;  "TARGET_80387 && ! TARGET_IEEE_FP"
  11876. +;;  "*
  11877. +;;{
  11878. +;;  if (! STACK_TOP_P (operands[0]))
  11879. +;;    abort ();
  11880. +;;
  11881. +;;  output_asm_insn (\"ftst\", operands);
  11882. +;;
  11883. +;;  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  11884. +;;    output_asm_insn (AS1 (fstp,%y0), operands);
  11885. +;;
  11886. +;;  return (char *) output_fp_cc0_set (insn);
  11887. +;;}")
  11888. +;;
  11889. +;;;; Don't generate tstdf if generating IEEE code, since the `ftst' opcode
  11890. +;;;; isn't IEEE compliant.
  11891. +;;
  11892. +;;(define_expand "tstdf"
  11893. +;;  [(parallel [(set (cc0)
  11894. +;;           (match_operand:DF 0 "register_operand" ""))
  11895. +;;          (clobber (match_scratch:HI 1 ""))])]
  11896. +;;  "TARGET_80387 && ! TARGET_IEEE_FP"
  11897. +;;  "
  11898. +;;{
  11899. +;;  i386_compare_gen = gen_tstdf_cc;
  11900. +;;  i386_compare_op0 = operands[0];
  11901. +;;  DONE;
  11902. +;;}")
  11903. +
  11904. +;;(define_insn "tstxf_cc"
  11905. +;;  [(set (cc0)
  11906. +;;      (match_operand:XF 0 "register_operand" "f"))
  11907. +;;   (clobber (match_scratch:HI 1 "=a"))]
  11908. +;;  "TARGET_80387 && ! TARGET_IEEE_FP"
  11909. +;;  "*
  11910. +;;{
  11911. +;;  if (! STACK_TOP_P (operands[0]))
  11912. +;;    abort ();
  11913. +;;
  11914. +;;  output_asm_insn (\"ftst\", operands);
  11915. +;;
  11916. +;;  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  11917. +;;    output_asm_insn (AS1 (fstp,%y0), operands);
  11918. +;;
  11919. +;;  return (char *) output_fp_cc0_set (insn);
  11920. +;;}")
  11921. +;;
  11922. +;;;; Don't generate tstdf if generating IEEE code, since the `ftst' opcode
  11923. +;;;; isn't IEEE compliant.
  11924. +;;
  11925. +;;(define_expand "tstxf"
  11926. +;;  [(parallel [(set (cc0)
  11927. +;;                 (match_operand:XF 0 "register_operand" ""))
  11928. +;;            (clobber (match_scratch:HI 1 ""))])]
  11929. +;;  "TARGET_80387 && ! TARGET_IEEE_FP"
  11930. +;;  "
  11931. +;;{
  11932. +;;  i386_compare_gen = gen_tstxf_cc;
  11933. +;;  i386_compare_op0 = operands[0];
  11934. +;;  DONE;
  11935. +;;}")
  11936.  
  11937.  ;;- compare instructions.  See comments above tstM patterns about
  11938.  ;;  expansion of these insns.
  11939. @@ -341,55 +375,56 @@
  11940.  ;; SFmode, there is the normal insn, and an insn where the second operand
  11941.  ;; is converted to the desired mode.
  11942.  
  11943. +;;intel1 operand 1 and 2 changed from nonimmediate_operand to general_operand
  11944.  (define_insn ""
  11945.    [(set (cc0)
  11946.      (match_operator 2 "VOIDmode_compare_op"
  11947. -            [(match_operand:XF 0 "nonimmediate_operand" "f")
  11948. -             (match_operand:XF 1 "nonimmediate_operand" "f")]))
  11949. +            [(match_operand:XF 0 "general_operand" "f")
  11950. +             (match_operand:XF 1 "general_operand" "f")]))
  11951.     (clobber (match_scratch:HI 3 "=a"))]
  11952.    "TARGET_80387
  11953.     && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
  11954. -  "* return output_float_compare (insn, operands);")
  11955. +  "* return (char *) output_float_compare (insn, operands);")
  11956.  
  11957.  (define_insn ""
  11958.    [(set (cc0)
  11959.      (match_operator 2 "VOIDmode_compare_op"
  11960.              [(match_operand:XF 0 "register_operand" "f")
  11961.               (float:XF
  11962. -              (match_operand:SI 1 "nonimmediate_operand" "rm"))]))
  11963. +              (match_operand:SI 1 "general_operand" "rm"))]))
  11964.     (clobber (match_scratch:HI 3 "=a"))]
  11965.    "TARGET_80387"
  11966. -  "* return output_float_compare (insn, operands);")
  11967. +  "* return (char *) output_float_compare (insn, operands);")
  11968.  
  11969.  (define_insn ""
  11970.    [(set (cc0)
  11971.      (match_operator 2 "VOIDmode_compare_op"
  11972.              [(float:XF
  11973. -              (match_operand:SI 0 "nonimmediate_operand" "rm"))
  11974. +              (match_operand:SI 0 "general_operand" "rm"))
  11975.               (match_operand:XF 1 "register_operand" "f")]))
  11976.     (clobber (match_scratch:HI 3 "=a"))]
  11977.    "TARGET_80387"
  11978. -  "* return output_float_compare (insn, operands);")
  11979. +  "* return (char *) output_float_compare (insn, operands);")
  11980.  
  11981.  (define_insn ""
  11982.    [(set (cc0)
  11983.      (match_operator 2 "VOIDmode_compare_op"
  11984.              [(match_operand:XF 0 "register_operand" "f")
  11985.               (float_extend:XF
  11986. -              (match_operand:DF 1 "nonimmediate_operand" "fm"))]))
  11987. +              (match_operand:DF 1 "general_operand" "fm"))]))
  11988.     (clobber (match_scratch:HI 3 "=a"))]
  11989.    "TARGET_80387"
  11990. -  "* return output_float_compare (insn, operands);")
  11991. +  "* return (char *) output_float_compare (insn, operands);")
  11992.  
  11993.  (define_insn ""
  11994.    [(set (cc0)
  11995.      (match_operator 2 "VOIDmode_compare_op"
  11996.              [(match_operand:XF 0 "register_operand" "f")
  11997.               (float_extend:XF
  11998. -              (match_operand:SF 1 "nonimmediate_operand" "fm"))]))
  11999. +              (match_operand:SF 1 "general_operand" "fm"))]))
  12000.     (clobber (match_scratch:HI 3 "=a"))]
  12001.    "TARGET_80387"
  12002. -  "* return output_float_compare (insn, operands);")
  12003. +  "* return (char *) output_float_compare (insn, operands);")
  12004.  
  12005.  (define_insn ""
  12006.    [(set (cc0)
  12007. @@ -397,17 +432,17 @@
  12008.              (match_operand:XF 1 "register_operand" "f")))
  12009.     (clobber (match_scratch:HI 2 "=a"))]
  12010.    "TARGET_80387"
  12011. -  "* return output_float_compare (insn, operands);")
  12012. +  "* return (char *) output_float_compare (insn, operands);")
  12013.  
  12014.  (define_insn ""
  12015.    [(set (cc0)
  12016.      (match_operator 2 "VOIDmode_compare_op"
  12017. -            [(match_operand:DF 0 "nonimmediate_operand" "f,fm")
  12018. -             (match_operand:DF 1 "nonimmediate_operand" "fm,f")]))
  12019. +            [(match_operand:DF 0 "general_operand" "f,fm")
  12020. +             (match_operand:DF 1 "general_operand" "fm,f")]))
  12021.     (clobber (match_scratch:HI 3 "=a,a"))]
  12022.    "TARGET_80387
  12023.     && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
  12024. -  "* return output_float_compare (insn, operands);")
  12025. +  "* return (char *) output_float_compare (insn, operands);")
  12026.  
  12027.  (define_insn ""
  12028.    [(set (cc0)
  12029. @@ -417,7 +452,7 @@
  12030.                (match_operand:SI 1 "nonimmediate_operand" "rm"))]))
  12031.     (clobber (match_scratch:HI 3 "=a"))]
  12032.    "TARGET_80387"
  12033. -  "* return output_float_compare (insn, operands);")
  12034. +  "* return (char *) output_float_compare (insn, operands);")
  12035.  
  12036.  (define_insn ""
  12037.    [(set (cc0)
  12038. @@ -427,7 +462,7 @@
  12039.               (match_operand:DF 1 "register_operand" "f")]))
  12040.     (clobber (match_scratch:HI 3 "=a"))]
  12041.    "TARGET_80387"
  12042. -  "* return output_float_compare (insn, operands);")
  12043. +  "* return (char *) output_float_compare (insn, operands);")
  12044.  
  12045.  (define_insn ""
  12046.    [(set (cc0)
  12047. @@ -437,7 +472,7 @@
  12048.                (match_operand:SF 1 "nonimmediate_operand" "fm"))]))
  12049.     (clobber (match_scratch:HI 3 "=a"))]
  12050.    "TARGET_80387"
  12051. -  "* return output_float_compare (insn, operands);")
  12052. +  "* return (char *) output_float_compare (insn, operands);")
  12053.  
  12054.  (define_insn ""
  12055.    [(set (cc0)
  12056. @@ -447,7 +482,18 @@
  12057.               (match_operand:DF 1 "register_operand" "f")]))
  12058.     (clobber (match_scratch:HI 3 "=a"))]
  12059.    "TARGET_80387"
  12060. -  "* return output_float_compare (insn, operands);")
  12061. +  "* return (char *) output_float_compare (insn, operands);")
  12062. +
  12063. +;;intel1 
  12064. +(define_insn ""
  12065. +  [(set (cc0)
  12066. +    (match_operator 2 "VOIDmode_compare_op"
  12067. +            [(float_extend:DF
  12068. +              (match_operand:SF 0 "register_operand" "f"))
  12069. +             (match_operand:DF 1 "general_operand" "fm")]))
  12070. +   (clobber (match_scratch:HI 3 "=a"))]
  12071. +  "TARGET_80387"
  12072. +  "* return (char *) output_float_compare (insn, operands);")
  12073.  
  12074.  (define_insn ""
  12075.    [(set (cc0)
  12076. @@ -455,7 +501,7 @@
  12077.              (match_operand:DF 1 "register_operand" "f")))
  12078.     (clobber (match_scratch:HI 2 "=a"))]
  12079.    "TARGET_80387"
  12080. -  "* return output_float_compare (insn, operands);")
  12081. +  "* return (char *) output_float_compare (insn, operands);")
  12082.  
  12083.  ;; These two insns will never be generated by combine due to the mode of
  12084.  ;; the COMPARE.
  12085. @@ -466,7 +512,7 @@
  12086.  ;             (match_operand:SF 1 "register_operand" "f"))))
  12087.  ;   (clobber (match_scratch:HI 2 "=a"))]
  12088.  ;  "TARGET_80387"
  12089. -;  "* return output_float_compare (insn, operands);")
  12090. +;  "* return (char *) output_float_compare (insn, operands);")
  12091.  ;
  12092.  ;(define_insn ""
  12093.  ;  [(set (cc0)
  12094. @@ -475,17 +521,18 @@
  12095.  ;            (match_operand:DF 1 "register_operand" "f")))
  12096.  ;   (clobber (match_scratch:HI 2 "=a"))]
  12097.  ;  "TARGET_80387"
  12098. -;  "* return output_float_compare (insn, operands);")
  12099. +;  "* return (char *) output_float_compare (insn, operands);")
  12100.  
  12101. +;;intel1 operand 1 changed from nonimmediate_operand to general_operand
  12102.  (define_insn "cmpsf_cc_1"
  12103.    [(set (cc0)
  12104.      (match_operator 2 "VOIDmode_compare_op"
  12105.              [(match_operand:SF 0 "nonimmediate_operand" "f,fm")
  12106. -             (match_operand:SF 1 "nonimmediate_operand" "fm,f")]))
  12107. +             (match_operand:SF 1 "general_operand" "fm,f")]))
  12108.     (clobber (match_scratch:HI 3 "=a,a"))]
  12109.    "TARGET_80387
  12110.     && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
  12111. -  "* return output_float_compare (insn, operands);")
  12112. +  "* return (char *) output_float_compare (insn, operands);")
  12113.  
  12114.  (define_insn ""
  12115.    [(set (cc0)
  12116. @@ -495,7 +542,7 @@
  12117.                (match_operand:SI 1 "nonimmediate_operand" "rm"))]))
  12118.     (clobber (match_scratch:HI 3 "=a"))]
  12119.    "TARGET_80387"
  12120. -  "* return output_float_compare (insn, operands);")
  12121. +  "* return (char *) output_float_compare (insn, operands);")
  12122.  
  12123.  (define_insn ""
  12124.    [(set (cc0)
  12125. @@ -505,7 +552,7 @@
  12126.               (match_operand:SF 1 "register_operand" "f")]))
  12127.     (clobber (match_scratch:HI 3 "=a"))]
  12128.    "TARGET_80387"
  12129. -  "* return output_float_compare (insn, operands);")
  12130. +  "* return (char *) output_float_compare (insn, operands);")
  12131.  
  12132.  (define_insn ""
  12133.    [(set (cc0)
  12134. @@ -513,12 +560,12 @@
  12135.              (match_operand:SF 1 "register_operand" "f")))
  12136.     (clobber (match_scratch:HI 2 "=a"))]
  12137.    "TARGET_80387"
  12138. -  "* return output_float_compare (insn, operands);")
  12139. +  "* return (char *) output_float_compare (insn, operands);")
  12140.  
  12141.  (define_expand "cmpxf"
  12142.    [(set (cc0)
  12143. -    (compare (match_operand:XF 0 "register_operand" "")
  12144. -         (match_operand:XF 1 "nonimmediate_operand" "")))]
  12145. +      (compare (match_operand:XF 0 "register_operand" "")
  12146. +               (match_operand:XF 1 "nonimmediate_operand" "")))]
  12147.    "TARGET_80387"
  12148.    "
  12149.  {
  12150. @@ -529,10 +576,11 @@
  12151.    DONE;
  12152.  }")
  12153.  
  12154. +;;intel1 operand 1 changed from nonimmediate_operand to general_operand
  12155.  (define_expand "cmpdf"
  12156.    [(set (cc0)
  12157.      (compare (match_operand:DF 0 "register_operand" "")
  12158. -         (match_operand:DF 1 "nonimmediate_operand" "")))]
  12159. +         (match_operand:DF 1 "general_operand" "")))]
  12160.    "TARGET_80387"
  12161.    "
  12162.  {
  12163. @@ -543,10 +591,11 @@
  12164.    DONE;
  12165.  }")
  12166.  
  12167. +;;intel1 operand 1 changed from nonimmediate_operand to general_operand
  12168.  (define_expand "cmpsf"
  12169.    [(set (cc0)
  12170.      (compare (match_operand:SF 0 "register_operand" "")
  12171. -         (match_operand:SF 1 "nonimmediate_operand" "")))]
  12172. +         (match_operand:SF 1 "general_operand" "")))]
  12173.    "TARGET_80387"
  12174.    "
  12175.  {
  12176. @@ -559,17 +608,17 @@
  12177.  
  12178.  (define_expand "cmpxf_cc"
  12179.    [(parallel [(set (cc0)
  12180. -           (compare (match_operand:XF 0 "register_operand" "")
  12181. -                (match_operand:XF 1 "register_operand" "")))
  12182. -          (clobber (match_scratch:HI 2 ""))])]
  12183. +                 (compare (match_operand:XF 0 "register_operand" "")
  12184. +                          (match_operand:XF 1 "register_operand" "")))
  12185. +            (clobber (match_scratch:HI 2 ""))])]
  12186.    "TARGET_80387"
  12187.    "")
  12188.  
  12189.  (define_expand "cmpxf_ccfpeq"
  12190.    [(parallel [(set (cc0)
  12191. -           (compare:CCFPEQ (match_operand:XF 0 "register_operand" "")
  12192. -                   (match_operand:XF 1 "register_operand" "")))
  12193. -          (clobber (match_scratch:HI 2 ""))])]
  12194. +                 (compare:CCFPEQ (match_operand:XF 0 "register_operand" "")
  12195. +                                 (match_operand:XF 1 "register_operand" "")))
  12196. +            (clobber (match_scratch:HI 2 ""))])]
  12197.    "TARGET_80387"
  12198.    "
  12199.  {
  12200. @@ -740,7 +789,7 @@
  12201.  (define_insn ""
  12202.    [(set (match_operand:SI 0 "push_operand" "=<")
  12203.      (match_operand:SI 1 "general_operand" "g"))]
  12204. -  "TARGET_386"
  12205. +  "! TARGET_486"
  12206.    "push%L0 %1")
  12207.  
  12208.  ;; On a 486, it is faster to move MEM to a REG and then push, rather than
  12209. @@ -748,14 +797,8 @@
  12210.  
  12211.  (define_insn ""
  12212.    [(set (match_operand:SI 0 "push_operand" "=<")
  12213. -    (match_operand:SI 1 "nonmemory_operand" "ri"))]
  12214. -  "!TARGET_386 && TARGET_MOVE"
  12215. -  "push%L0 %1")
  12216. -
  12217. -(define_insn ""
  12218. -  [(set (match_operand:SI 0 "push_operand" "=<")
  12219.      (match_operand:SI 1 "general_operand" "ri"))]
  12220. -  "!TARGET_386 && !TARGET_MOVE"
  12221. +  "TARGET_486"
  12222.    "push%L0 %1")
  12223.  
  12224.  ;; General case of fullword move.
  12225. @@ -773,15 +816,6 @@
  12226.  
  12227.    if (flag_pic && SYMBOLIC_CONST (operands[1]))
  12228.      emit_pic_move (operands, SImode);
  12229. -
  12230. -  /* Don't generate memory->memory moves, go through a register */
  12231. -  else if (TARGET_MOVE
  12232. -       && (reload_in_progress | reload_completed) == 0
  12233. -       && GET_CODE (operands[0]) == MEM
  12234. -       && GET_CODE (operands[1]) == MEM)
  12235. -    {
  12236. -      operands[1] = force_reg (SImode, operands[1]);
  12237. -    }
  12238.  }")
  12239.  
  12240.  ;; On i486, incl reg is faster than movl $1,reg.
  12241. @@ -789,7 +823,7 @@
  12242.  (define_insn ""
  12243.    [(set (match_operand:SI 0 "general_operand" "=g,r")
  12244.      (match_operand:SI 1 "general_operand" "ri,m"))]
  12245. -  "(!TARGET_MOVE || GET_CODE (operands[0]) != MEM) || (GET_CODE (operands[1]) != MEM)"
  12246. +  ""
  12247.    "*
  12248.  {
  12249.    rtx link;
  12250. @@ -808,52 +842,21 @@
  12251.      /* Fastest way to change a 0 to a 1.  */
  12252.      return AS1 (inc%L0,%0);
  12253.  
  12254. -  if (flag_pic && SYMBOLIC_CONST (operands[1]))
  12255. -    return AS2 (lea%L0,%a1,%0);
  12256. -
  12257.    return AS2 (mov%L0,%1,%0);
  12258.  }")
  12259.  
  12260.  (define_insn ""
  12261.    [(set (match_operand:HI 0 "push_operand" "=<")
  12262.      (match_operand:HI 1 "general_operand" "g"))]
  12263. -  "TARGET_386"
  12264. -  "push%W0 %1")
  12265. -
  12266. -(define_insn ""
  12267. -  [(set (match_operand:HI 0 "push_operand" "=<")
  12268. -    (match_operand:HI 1 "nonmemory_operand" "ri"))]
  12269. -  "!TARGET_386 && TARGET_MOVE"
  12270. -  "push%W0 %1")
  12271. -
  12272. -(define_insn ""
  12273. -  [(set (match_operand:HI 0 "push_operand" "=<")
  12274. -    (match_operand:HI 1 "general_operand" "ri"))]
  12275. -  "!TARGET_386 && !TARGET_MOVE"
  12276. +  ""
  12277.    "push%W0 %1")
  12278.  
  12279.  ;; On i486, an incl and movl are both faster than incw and movw.
  12280.  
  12281. -(define_expand "movhi"
  12282. -  [(set (match_operand:HI 0 "general_operand" "")
  12283. -    (match_operand:HI 1 "general_operand" ""))]
  12284. -  ""
  12285. -  "
  12286. -{
  12287. -  /* Don't generate memory->memory moves, go through a register */
  12288. -  if (TARGET_MOVE
  12289. -      && (reload_in_progress | reload_completed) == 0
  12290. -      && GET_CODE (operands[0]) == MEM
  12291. -      && GET_CODE (operands[1]) == MEM)
  12292. -    {
  12293. -      operands[1] = force_reg (HImode, operands[1]);
  12294. -    }
  12295. -}")
  12296. -
  12297. -(define_insn ""
  12298. +(define_insn "movhi"
  12299.    [(set (match_operand:HI 0 "general_operand" "=g,r")
  12300.      (match_operand:HI 1 "general_operand" "ri,m"))]
  12301. -  "(!TARGET_MOVE || GET_CODE (operands[0]) != MEM) || (GET_CODE (operands[1]) != MEM)"
  12302. +  ""
  12303.    "*
  12304.  {
  12305.    rtx link;
  12306. @@ -883,26 +886,10 @@
  12307.    return AS2 (mov%W0,%1,%0);
  12308.  }")
  12309.  
  12310. -(define_expand "movstricthi"
  12311. -  [(set (strict_low_part (match_operand:HI 0 "general_operand" ""))
  12312. -    (match_operand:HI 1 "general_operand" ""))]
  12313. -  ""
  12314. -  "
  12315. -{
  12316. -  /* Don't generate memory->memory moves, go through a register */
  12317. -  if (TARGET_MOVE
  12318. -      && (reload_in_progress | reload_completed) == 0
  12319. -      && GET_CODE (operands[0]) == MEM
  12320. -      && GET_CODE (operands[1]) == MEM)
  12321. -    {
  12322. -      operands[1] = force_reg (HImode, operands[1]);
  12323. -    }
  12324. -}")
  12325. -
  12326. -(define_insn ""
  12327. +(define_insn "movstricthi"
  12328.    [(set (strict_low_part (match_operand:HI 0 "general_operand" "+g,r"))
  12329.      (match_operand:HI 1 "general_operand" "ri,m"))]
  12330. -  "(!TARGET_MOVE || GET_CODE (operands[0]) != MEM) || (GET_CODE (operands[1]) != MEM)"
  12331. +  ""
  12332.    "*
  12333.  {
  12334.    rtx link;
  12335. @@ -930,24 +917,8 @@
  12336.  ;; the amount pushed up to a halfword.
  12337.  (define_insn ""
  12338.    [(set (match_operand:QI 0 "push_operand" "=<")
  12339. -    (match_operand:QI 1 "immediate_operand" "n"))]
  12340. +    (match_operand:QI 1 "general_operand" "q"))]
  12341.    ""
  12342. -  "* return AS1 (push%W0,%1);")
  12343. -
  12344. -(define_insn ""
  12345. -  [(set (match_operand:QI 0 "push_operand" "=<")
  12346. -    (match_operand:QI 1 "nonimmediate_operand" "q"))]
  12347. -  "!TARGET_MOVE"
  12348. -  "*
  12349. -{
  12350. -  operands[1] = gen_rtx (REG, HImode, REGNO (operands[1]));
  12351. -  return AS1 (push%W0,%1);
  12352. -}")
  12353. -
  12354. -(define_insn ""
  12355. -  [(set (match_operand:QI 0 "push_operand" "=<")
  12356. -    (match_operand:QI 1 "register_operand" "q"))]
  12357. -  "TARGET_MOVE"
  12358.    "*
  12359.  {
  12360.    operands[1] = gen_rtx (REG, HImode, REGNO (operands[1]));
  12361. @@ -959,26 +930,10 @@
  12362.  ;; ??? Do a recognizer for zero_extract that looks just like this, but reads
  12363.  ;; or writes %ah, %bh, %ch, %dh.
  12364.  
  12365. -(define_expand "movqi"
  12366. -  [(set (match_operand:QI 0 "general_operand" "")
  12367. -    (match_operand:QI 1 "general_operand" ""))]
  12368. -  ""
  12369. -  "
  12370. -{
  12371. -  /* Don't generate memory->memory moves, go through a register */
  12372. -  if (TARGET_MOVE
  12373. -      && (reload_in_progress | reload_completed) == 0
  12374. -      && GET_CODE (operands[0]) == MEM
  12375. -      && GET_CODE (operands[1]) == MEM)
  12376. -    {
  12377. -      operands[1] = force_reg (QImode, operands[1]);
  12378. -    }
  12379. -}")
  12380. -
  12381. -(define_insn ""
  12382. +(define_insn "movqi"
  12383.    [(set (match_operand:QI 0 "general_operand" "=q,*r,qm")
  12384.      (match_operand:QI 1 "general_operand" "*g,q,qn"))]
  12385. -  "(!TARGET_MOVE || GET_CODE (operands[0]) != MEM) || (GET_CODE (operands[1]) != MEM)"
  12386. +  ""
  12387.    "*
  12388.  {
  12389.    rtx link;
  12390. @@ -1013,26 +968,10 @@
  12391.  ;; If operands[1] is a constant, then an andl/orl sequence would be
  12392.  ;; faster.
  12393.  
  12394. -(define_expand "movstrictqi"
  12395. -  [(set (strict_low_part (match_operand:QI 0 "general_operand" ""))
  12396. -    (match_operand:QI 1 "general_operand" ""))]
  12397. -  ""
  12398. -  "
  12399. -{
  12400. -  /* Don't generate memory->memory moves, go through a register */
  12401. -  if (TARGET_MOVE
  12402. -      && (reload_in_progress | reload_completed) == 0
  12403. -      && GET_CODE (operands[0]) == MEM
  12404. -      && GET_CODE (operands[1]) == MEM)
  12405. -    {
  12406. -      operands[1] = force_reg (QImode, operands[1]);
  12407. -    }
  12408. -}")
  12409. -
  12410. -(define_insn ""
  12411. +(define_insn "movstrictqi"
  12412.    [(set (strict_low_part (match_operand:QI 0 "general_operand" "+qm,q"))
  12413.      (match_operand:QI 1 "general_operand" "*qn,m"))]
  12414. -  "(!TARGET_MOVE || GET_CODE (operands[0]) != MEM) || (GET_CODE (operands[1]) != MEM)"
  12415. +  ""
  12416.    "*
  12417.  {
  12418.    rtx link;
  12419. @@ -1061,43 +1000,10 @@
  12420.    return AS2 (mov%B0,%1,%0);
  12421.  }")
  12422.  
  12423. -(define_expand "movsf"
  12424. -  [(set (match_operand:SF 0 "general_operand" "")
  12425. -    (match_operand:SF 1 "general_operand" ""))]
  12426. -  ""
  12427. -  "
  12428. -{
  12429. -  /* Special case memory->memory moves and pushes */
  12430. -  if (TARGET_MOVE
  12431. -      && (reload_in_progress | reload_completed) == 0
  12432. -      && GET_CODE (operands[0]) == MEM
  12433. -      && (GET_CODE (operands[1]) == MEM || push_operand (operands[0], SFmode)))
  12434. -    {
  12435. -      rtx (*genfunc) PROTO((rtx, rtx)) = (push_operand (operands[0], SFmode))
  12436. -                        ? gen_movsf_push
  12437. -                        : gen_movsf_mem;
  12438. -
  12439. -      emit_insn ((*genfunc) (operands[0], operands[1]));
  12440. -      DONE;
  12441. -    }
  12442. -
  12443. -  /* If we are loading a floating point constant that isn't 0 or 1 into a register,
  12444. -     indicate we need the pic register loaded.  This could be optimized into stores
  12445. -     of constants if the target eventually moves to memory, but better safe than
  12446. -     sorry.  */
  12447. -  if (flag_pic
  12448. -      && GET_CODE (operands[0]) != MEM
  12449. -      && GET_CODE (operands[1]) == CONST_DOUBLE
  12450. -      && !standard_80387_constant_p (operands[1]))
  12451. -    {
  12452. -      current_function_uses_pic_offset_table = 1;
  12453. -    }
  12454. -}")
  12455. -
  12456. -(define_insn "movsf_push_nomove"
  12457. +(define_insn ""
  12458.    [(set (match_operand:SF 0 "push_operand" "=<,<")
  12459.      (match_operand:SF 1 "general_operand" "gF,f"))]
  12460. -  "!TARGET_MOVE"
  12461. +  ""
  12462.    "*
  12463.  {
  12464.    if (STACK_REG_P (operands[1]))
  12465. @@ -1122,61 +1028,24 @@
  12466.    return AS1 (push%L1,%1);
  12467.  }")
  12468.  
  12469. -(define_insn "movsf_push"
  12470. -  [(set (match_operand:SF 0 "push_operand" "=<,<,<,<")
  12471. -    (match_operand:SF 1 "general_operand" "rF,f,m,m"))
  12472. -   (clobber (match_scratch:SI 2 "=X,X,r,X"))]
  12473. -  ""
  12474. -  "*
  12475. -{
  12476. -  if (STACK_REG_P (operands[1]))
  12477. -    {
  12478. -      rtx xops[3];
  12479. -
  12480. -      if (! STACK_TOP_P (operands[1]))
  12481. -        abort ();
  12482. -
  12483. -      xops[0] = AT_SP (SFmode);
  12484. -      xops[1] = GEN_INT (4);
  12485. -      xops[2] = stack_pointer_rtx;
  12486. -
  12487. -      output_asm_insn (AS2 (sub%L2,%1,%2), xops);
  12488. -
  12489. -      if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  12490. -        output_asm_insn (AS1 (fstp%S0,%0), xops);
  12491. -      else
  12492. -        output_asm_insn (AS1 (fst%S0,%0), xops);
  12493. -      RET;
  12494. -    }
  12495. -
  12496. -  else if (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != REG)
  12497. -    return AS1 (push%L1,%1);
  12498. -
  12499. -  else
  12500. -    {
  12501. -      output_asm_insn (AS2 (mov%L2,%1,%2), operands);
  12502. -      return AS1 (push%L2,%2);
  12503. -    }
  12504. -}")
  12505. +;; Allow MEM-MEM moves before reload.  The reload class for such a
  12506. +;; move will be ALL_REGS.  PREFERRED_RELOAD_CLASS will narrow this to
  12507. +;; GENERAL_REGS.  For the purposes of regclass, prefer FLOAT_REGS.
  12508.  
  12509. -;; Special memory<->memory pattern that combine will recreate from the
  12510. -;; moves to pseudos.
  12511. -(define_insn "movsf_mem"
  12512. -  [(set (match_operand:SF 0 "memory_operand" "=m")
  12513. -    (match_operand:SF 1 "memory_operand" "m"))
  12514. -   (clobber (match_scratch:SI 2 "=&r"))]
  12515. +;;intel1
  12516. +(define_insn "memmovsf"
  12517. +  [(set (match_operand:SF 0 "memory_operand" "=r,m")
  12518. +    (match_operand:SF 1 "memory_operand" "m,r"))]
  12519.    ""
  12520.    "*
  12521.  {
  12522. -  output_asm_insn (AS2 (mov%L2,%1,%2), operands);
  12523. -  return AS2 (mov%L0,%2,%0);
  12524. +  return (char *) singlemove_string (operands);
  12525.  }")
  12526.  
  12527. -;; For the purposes of regclass, prefer FLOAT_REGS.
  12528. -(define_insn "movsf_normal"
  12529. +(define_insn "movsf"
  12530.    [(set (match_operand:SF 0 "general_operand" "=*rfm,*rf,f,!*rm")
  12531.      (match_operand:SF 1 "general_operand" "*rf,*rfm,fG,fF"))]
  12532. -  "(!TARGET_MOVE || GET_CODE (operands[0]) != MEM) || (GET_CODE (operands[1]) != MEM)"
  12533. +  ""
  12534.    "*
  12535.  {
  12536.    int stack_top_dies = find_regno_note (insn, REG_DEAD, FIRST_STACK_REG) != 0;
  12537. @@ -1218,67 +1087,21 @@
  12538.    /* Handle other kinds of reads to the 387 */
  12539.  
  12540.    if (STACK_TOP_P (operands[0]) && GET_CODE (operands[1]) == CONST_DOUBLE)
  12541. -    return output_move_const_single (operands);
  12542. +    return (char *) output_move_const_single (operands);
  12543.  
  12544.    if (STACK_TOP_P (operands[0]))
  12545.      return AS1 (fld%z1,%y1);
  12546.  
  12547.    /* Handle all SFmode moves not involving the 387 */
  12548.  
  12549. -  return singlemove_string (operands);
  12550. -}")
  12551. -
  12552. -(define_insn "swapsf"
  12553. -  [(set (match_operand:SF 0 "register_operand" "f")
  12554. -    (match_operand:SF 1 "register_operand" "f"))
  12555. -   (set (match_dup 1)
  12556. -    (match_dup 0))]
  12557. -  ""
  12558. -  "*
  12559. -{
  12560. -  if (STACK_TOP_P (operands[0]))
  12561. -    return AS1 (fxch,%1);
  12562. -  else
  12563. -    return AS1 (fxch,%0);
  12564. -}")
  12565. -
  12566. -(define_expand "movdf"
  12567. -  [(set (match_operand:DF 0 "general_operand" "")
  12568. -    (match_operand:DF 1 "general_operand" ""))]
  12569. -  ""
  12570. -  "
  12571. -{
  12572. -  /* Special case memory->memory moves and pushes */
  12573. -  if (TARGET_MOVE
  12574. -      && (reload_in_progress | reload_completed) == 0
  12575. -      && GET_CODE (operands[0]) == MEM
  12576. -      && (GET_CODE (operands[1]) == MEM || push_operand (operands[0], DFmode)))
  12577. -    {
  12578. -      rtx (*genfunc) PROTO((rtx, rtx)) = (push_operand (operands[0], DFmode))
  12579. -                        ? gen_movdf_push
  12580. -                        : gen_movdf_mem;
  12581. -
  12582. -      emit_insn ((*genfunc) (operands[0], operands[1]));
  12583. -      DONE;
  12584. -    }
  12585. -
  12586. -  /* If we are loading a floating point constant that isn't 0 or 1 into a register,
  12587. -     indicate we need the pic register loaded.  This could be optimized into stores
  12588. -     of constants if the target eventually moves to memory, but better safe than
  12589. -     sorry.  */
  12590. -  if (flag_pic
  12591. -      && GET_CODE (operands[0]) != MEM
  12592. -      && GET_CODE (operands[1]) == CONST_DOUBLE
  12593. -      && !standard_80387_constant_p (operands[1]))
  12594. -    {
  12595. -      current_function_uses_pic_offset_table = 1;
  12596. -    }
  12597. -}")
  12598. +  return (char *) singlemove_string (operands);
  12599. +}"[(set_attr "type" "fld")])
  12600.  
  12601. -(define_insn "movdf_push_nomove"
  12602. +;;should change to handle the memory operands[1] without doing df push..
  12603. +(define_insn ""
  12604.    [(set (match_operand:DF 0 "push_operand" "=<,<")
  12605.      (match_operand:DF 1 "general_operand" "gF,f"))]
  12606. -  "!TARGET_MOVE"
  12607. +  ""
  12608.    "*
  12609.  {
  12610.    if (STACK_REG_P (operands[1]))
  12611. @@ -1299,55 +1122,41 @@
  12612.        RET;
  12613.      }
  12614.    else
  12615. -    return output_move_double (operands);
  12616. +    return (char *) output_move_double (operands);
  12617.  }")
  12618.  
  12619. -(define_insn "movdf_push"
  12620. -  [(set (match_operand:DF 0 "push_operand" "=<,<,<,<,<")
  12621. -    (match_operand:DF 1 "general_operand" "rF,f,o,o,o"))
  12622. -   (clobber (match_scratch:SI 2 "=X,X,&r,&r,X"))
  12623. -   (clobber (match_scratch:SI 3 "=X,X,&r,X,X"))]
  12624. +(define_insn "swapdf"
  12625. +  [(set (match_operand:DF 0 "register_operand" "f")
  12626. +    (match_operand:DF 1 "register_operand" "f"))
  12627. +   (set (match_dup 1)
  12628. +    (match_dup 0))]
  12629.    ""
  12630.    "*
  12631.  {
  12632. -  if (STACK_REG_P (operands[1]))
  12633. -    {
  12634. -      rtx xops[3];
  12635. -
  12636. -      xops[0] = AT_SP (SFmode);
  12637. -      xops[1] = GEN_INT (8);
  12638. -      xops[2] = stack_pointer_rtx;
  12639. -
  12640. -      output_asm_insn (AS2 (sub%L2,%1,%2), xops);
  12641. -
  12642. -      if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  12643. -        output_asm_insn (AS1 (fstp%Q0,%0), xops);
  12644. -      else
  12645. -        output_asm_insn (AS1 (fst%Q0,%0), xops);
  12646. -
  12647. -      RET;
  12648. -    }
  12649. -
  12650. -  else if (GET_CODE (operands[1]) != MEM)
  12651. -    return output_move_double (operands);
  12652. -
  12653. +  if (STACK_TOP_P (operands[0]))
  12654. +    return AS1 (fxch,%1);
  12655.    else
  12656. -    return output_move_pushmem (operands, insn, GET_MODE_SIZE (DFmode), 2, 4);
  12657. +    return AS1 (fxch,%0);
  12658.  }")
  12659.  
  12660. -(define_insn "movdf_mem"
  12661. -  [(set (match_operand:DF 0 "memory_operand" "=o,o")
  12662. -    (match_operand:DF 1 "memory_operand" "o,o"))
  12663. -   (clobber (match_scratch:SI 2 "=&r,&r"))
  12664. -   (clobber (match_scratch:SI 3 "=&r,X"))]
  12665. +;; Allow MEM-MEM moves before reload.  The reload class for such a
  12666. +;; move will be ALL_REGS.  PREFERRED_RELOAD_CLASS will narrow this to
  12667. +;; GENERAL_REGS.  For the purposes of regclass, prefer FLOAT_REGS.
  12668. +
  12669. +;;intel1
  12670. +(define_insn "memmovdf"
  12671. +  [(set (match_operand:DF 0 "memory_operand" "=r,m")
  12672. +    (match_operand:DF 1 "memory_operand" "m,r"))]
  12673.    ""
  12674. -  "* return output_move_memory (operands, insn, GET_MODE_SIZE (DFmode), 2, 4);")
  12675. +  "*
  12676. +{
  12677. +  return (char *) output_move_double (operands);
  12678. +}")
  12679.  
  12680. -;; For the purposes of regclass, prefer FLOAT_REGS.
  12681. -(define_insn "movdf_normal"
  12682. -  [(set (match_operand:DF 0 "general_operand" "=f,fm,!*rf,!*rm")
  12683. -    (match_operand:DF 1 "general_operand" "fmG,f,*rfm,*rfF"))]
  12684. -  "(!TARGET_MOVE || GET_CODE (operands[0]) != MEM) || (GET_CODE (operands[1]) != MEM)"
  12685. +(define_insn "movdf"
  12686. +  [(set (match_operand:DF 0 "general_operand" "=*rfm,*rf,f,!*rm")
  12687. +    (match_operand:DF 1 "general_operand" "*rf,*rfm,fG,fF"))]
  12688. +  ""
  12689.    "*
  12690.  {
  12691.    int stack_top_dies = find_regno_note (insn, REG_DEAD, FIRST_STACK_REG) != 0;
  12692. @@ -1389,68 +1198,20 @@
  12693.    /* Handle other kinds of reads to the 387 */
  12694.  
  12695.    if (STACK_TOP_P (operands[0]) && GET_CODE (operands[1]) == CONST_DOUBLE)
  12696. -    return output_move_const_single (operands);
  12697. +    return (char *) output_move_const_single (operands);
  12698.  
  12699.    if (STACK_TOP_P (operands[0]))
  12700.      return AS1 (fld%z1,%y1);
  12701.  
  12702.    /* Handle all DFmode moves not involving the 387 */
  12703.  
  12704. -  return output_move_double (operands);
  12705. -}")
  12706. +  return (char *) output_move_double (operands);
  12707. +}"[(set_attr "type" "fld")])
  12708.  
  12709. -(define_insn "swapdf"
  12710. -  [(set (match_operand:DF 0 "register_operand" "f")
  12711. -    (match_operand:DF 1 "register_operand" "f"))
  12712. -   (set (match_dup 1)
  12713. -    (match_dup 0))]
  12714. -  ""
  12715. -  "*
  12716. -{
  12717. -  if (STACK_TOP_P (operands[0]))
  12718. -    return AS1 (fxch,%1);
  12719. -  else
  12720. -    return AS1 (fxch,%0);
  12721. -}")
  12722. -
  12723. -(define_expand "movxf"
  12724. -  [(set (match_operand:XF 0 "general_operand" "")
  12725. -    (match_operand:XF 1 "general_operand" ""))]
  12726. -  ""
  12727. -  "
  12728. -{
  12729. -  /* Special case memory->memory moves and pushes */
  12730. -  if (TARGET_MOVE
  12731. -      && (reload_in_progress | reload_completed) == 0
  12732. -      && GET_CODE (operands[0]) == MEM
  12733. -      && (GET_CODE (operands[1]) == MEM || push_operand (operands[0], XFmode)))
  12734. -    {
  12735. -      rtx (*genfunc) PROTO((rtx, rtx)) = (push_operand (operands[0], XFmode))
  12736. -                        ? gen_movxf_push
  12737. -                        : gen_movxf_mem;
  12738. -
  12739. -      emit_insn ((*genfunc) (operands[0], operands[1]));
  12740. -      DONE;
  12741. -    }
  12742. -
  12743. -  /* If we are loading a floating point constant that isn't 0 or 1 into a register,
  12744. -     indicate we need the pic register loaded.  This could be optimized into stores
  12745. -     of constants if the target eventually moves to memory, but better safe than
  12746. -     sorry.  */
  12747. -  if (flag_pic
  12748. -      && GET_CODE (operands[0]) != MEM
  12749. -      && GET_CODE (operands[1]) == CONST_DOUBLE
  12750. -      && !standard_80387_constant_p (operands[1]))
  12751. -    {
  12752. -      current_function_uses_pic_offset_table = 1;
  12753. -    }
  12754. -}")
  12755. -
  12756. -
  12757. -(define_insn "movxf_push_nomove"
  12758. +(define_insn ""
  12759.    [(set (match_operand:XF 0 "push_operand" "=<,<")
  12760.       (match_operand:XF 1 "general_operand" "gF,f"))]
  12761. -  "!TARGET_MOVE"
  12762. +  ""
  12763.    "*
  12764.  {
  12765.    if (STACK_REG_P (operands[1]))
  12766. @@ -1469,53 +1230,29 @@
  12767.        RET;
  12768.      }
  12769.    else
  12770. -    return output_move_double (operands);
  12771. +    return (char *) output_move_double (operands);
  12772.   }")
  12773.  
  12774. -(define_insn "movxf_push"
  12775. -  [(set (match_operand:XF 0 "push_operand" "=<,<,<,<,<")
  12776. -     (match_operand:XF 1 "general_operand" "rF,f,o,o,o"))
  12777. -   (clobber (match_scratch:SI 2 "=X,X,&r,&r,X"))
  12778. -   (clobber (match_scratch:SI 3 "=X,X,&r,X,X"))]
  12779. +(define_insn "swapxf"
  12780. +  [(set (match_operand:XF 0 "register_operand" "f")
  12781. +    (match_operand:XF 1 "register_operand" "f"))
  12782. +   (set (match_dup 1)
  12783. +    (match_dup 0))]
  12784.    ""
  12785.    "*
  12786.  {
  12787. -  if (STACK_REG_P (operands[1]))
  12788. -    {
  12789. -      rtx xops[3];
  12790. -
  12791. -      xops[0] = AT_SP (SFmode);
  12792. -      xops[1] = GEN_INT (12);
  12793. -      xops[2] = stack_pointer_rtx;
  12794. -
  12795. -      output_asm_insn (AS2 (sub%L2,%1,%2), xops);
  12796. -      output_asm_insn (AS1 (fstp%T0,%0), xops);
  12797. -      if (! find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  12798. -    output_asm_insn (AS1 (fld%T0,%0), xops);
  12799. -
  12800. -      RET;
  12801. -    }
  12802. -
  12803. -  else if (GET_CODE (operands[1]) != MEM
  12804. -       || GET_CODE (operands[2]) != REG)
  12805. -    return output_move_double (operands);
  12806. -
  12807. +  if (STACK_TOP_P (operands[0]))
  12808. +    return AS1 (fxch,%1);
  12809.    else
  12810. -    return output_move_pushmem (operands, insn, GET_MODE_SIZE (XFmode), 2, 4);
  12811. +    return AS1 (fxch,%0);
  12812.  }")
  12813.  
  12814. -(define_insn "movxf_mem"
  12815. -  [(set (match_operand:XF 0 "memory_operand" "=o,o")
  12816. -    (match_operand:XF 1 "memory_operand" "o,o"))
  12817. -   (clobber (match_scratch:SI 2 "=&r,&r"))
  12818. -   (clobber (match_scratch:SI 3 "=&r,X"))]
  12819. -  ""
  12820. -  "* return output_move_memory (operands, insn, GET_MODE_SIZE (XFmode), 2, 4);")
  12821. -
  12822. -(define_insn "movxf_normal"
  12823. +(define_insn "movxf"
  12824.    [(set (match_operand:XF 0 "general_operand" "=f,fm,!*rf,!*rm")
  12825.      (match_operand:XF 1 "general_operand" "fmG,f,*rfm,*rfF"))]
  12826. -  "(!TARGET_MOVE || GET_CODE (operands[0]) != MEM) || (GET_CODE (operands[1]) != MEM)"
  12827. +;;  [(set (match_operand:XF 0 "general_operand" "=*rf,*rfm,f,!*rm")
  12828. +;;    (match_operand:XF 1 "general_operand" "*rfm,*rf,fG,fF"))]
  12829. +  ""
  12830.    "*
  12831.  {
  12832.    int stack_top_dies = find_regno_note (insn, REG_DEAD, FIRST_STACK_REG) != 0;
  12833. @@ -1558,61 +1295,33 @@
  12834.    /* Handle other kinds of reads to the 387 */
  12835.  
  12836.    if (STACK_TOP_P (operands[0]) && GET_CODE (operands[1]) == CONST_DOUBLE)
  12837. -    return output_move_const_single (operands);
  12838. +    return (char *) output_move_const_single (operands);
  12839.  
  12840.    if (STACK_TOP_P (operands[0]))
  12841.         return AS1 (fld%z1,%y1);
  12842.  
  12843.    /* Handle all XFmode moves not involving the 387 */
  12844.  
  12845. -  return output_move_double (operands);
  12846. -}")
  12847. -
  12848. -(define_insn "swapxf"
  12849. -  [(set (match_operand:XF 0 "register_operand" "f")
  12850. -    (match_operand:XF 1 "register_operand" "f"))
  12851. -   (set (match_dup 1)
  12852. -    (match_dup 0))]
  12853. -  ""
  12854. -  "*
  12855. -{
  12856. -  if (STACK_TOP_P (operands[0]))
  12857. -    return AS1 (fxch,%1);
  12858. -  else
  12859. -    return AS1 (fxch,%0);
  12860. +  return (char *) output_move_double (operands);
  12861.  }")
  12862.  
  12863.  (define_insn ""
  12864. -  [(set (match_operand:DI 0 "push_operand" "=<,<,<,<")
  12865. -    (match_operand:DI 1 "general_operand" "riF,o,o,o"))
  12866. -   (clobber (match_scratch:SI 2 "=X,&r,&r,X"))
  12867. -   (clobber (match_scratch:SI 3 "=X,&r,X,X"))]
  12868. +  [(set (match_operand:DI 0 "push_operand" "=<")
  12869. +    (match_operand:DI 1 "general_operand" "roiF"))]
  12870.    ""
  12871.    "*
  12872.  {
  12873. -  if (GET_CODE (operands[1]) != MEM)
  12874. -    return output_move_double (operands);
  12875. -
  12876. -  else
  12877. -    return output_move_pushmem (operands, insn, GET_MODE_SIZE (DImode), 2, 4);
  12878. +  return (char *) output_move_double (operands);
  12879.  }")
  12880.  
  12881.  (define_insn "movdi"
  12882. -  [(set (match_operand:DI 0 "general_operand" "=o,o,r,rm")
  12883. -    (match_operand:DI 1 "general_operand" "o,o,m,riF"))
  12884. -   (clobber (match_scratch:SI 2 "=&r,&r,X,X"))
  12885. -   (clobber (match_scratch:SI 3 "=&r,X,X,X"))]
  12886. +  [(set (match_operand:DI 0 "general_operand" "=r,rm")
  12887. +    (match_operand:DI 1 "general_operand" "m,riF"))]
  12888.    ""
  12889.    "*
  12890.  {
  12891. -  rtx low[2], high[2], xop[6];
  12892. -
  12893. -  if (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
  12894. -    return output_move_double (operands);
  12895. -  else
  12896. -    return output_move_memory (operands, insn, GET_MODE_SIZE (DImode), 2, 4);
  12897. +  return (char *) output_move_double (operands);
  12898.  }")
  12899. -
  12900.  
  12901.  ;;- conversion instructions
  12902.  ;;- NONE
  12903. @@ -1627,7 +1336,7 @@
  12904.    ""
  12905.    "*
  12906.  {
  12907. -  if ((!TARGET_386 || REGNO (operands[0]) == 0)
  12908. +  if (((TARGET_486 || TARGET_PENTIUM) || REGNO (operands[0]) == 0)
  12909.        && REG_P (operands[1]) && REGNO (operands[0]) == REGNO (operands[1]))
  12910.      {
  12911.        rtx xops[2];
  12912. @@ -1637,6 +1346,25 @@
  12913.        RET;
  12914.      }
  12915.  
  12916. +  if ((((TARGET_486 || TARGET_PENTIUM))) 
  12917. +       && !reg_overlap_mentioned_p(operands[0],operands[1]))
  12918. +  {
  12919. +    rtx xops[2];
  12920. +      output_asm_insn (AS2 (xor%L0,%0,%0),operands);
  12921. +      output_asm_insn (AS2 (mov%W0,%1,%w0),operands);
  12922. +    RET;
  12923. +  }
  12924. +
  12925. +  if ((TARGET_486 || TARGET_PENTIUM))
  12926. +  {
  12927. +    rtx xops[2];
  12928. +      xops[0] = operands[0];
  12929. +      xops[1] = gen_rtx (CONST_INT, VOIDmode, 0xffff);
  12930. +      output_asm_insn (AS2 (mov%W0,%1,%w0),operands);
  12931. +      output_asm_insn (AS2 (and%L0,%1,%k0), xops);
  12932. +    RET;
  12933. +  }
  12934. +
  12935.  #ifdef INTEL_SYNTAX
  12936.    return AS2 (movzx,%1,%0);
  12937.  #else
  12938. @@ -1651,7 +1379,7 @@
  12939.    ""
  12940.    "*
  12941.  {
  12942. -  if ((!TARGET_386 || REGNO (operands[0]) == 0)
  12943. +  if (((TARGET_486 || TARGET_PENTIUM) || REGNO (operands[0]) == 0)
  12944.        && REG_P (operands[1]) && REGNO (operands[0]) == REGNO (operands[1]))
  12945.      {
  12946.        rtx xops[2];
  12947. @@ -1661,6 +1389,26 @@
  12948.        RET;
  12949.      }
  12950.  
  12951. +    /* intel1 */
  12952. +  if ((((TARGET_486 || TARGET_PENTIUM))) &&
  12953. +       reg_fits_class_p (operands[0], Q_REGS, 0, SImode))
  12954. +  {
  12955. +    rtx xops[2];
  12956. +    if(!reg_overlap_mentioned_p(operands[0],operands[1]))
  12957. +    {
  12958. +      output_asm_insn (AS2 (xor%L0,%k0,%k0),operands);
  12959. +      output_asm_insn (AS2 (mov%B0,%1,%b0),operands);
  12960. +    }
  12961. +    else
  12962. +    {
  12963. +      xops[0] = operands[0];
  12964. +      xops[1] = gen_rtx (CONST_INT, VOIDmode, 0xff);
  12965. +      output_asm_insn (AS2 (mov%B0,%1,%b0),operands);
  12966. +      output_asm_insn (AS2 (and%L0,%1,%k0), xops);
  12967. +    }
  12968. +    RET;
  12969. +  }
  12970. +
  12971.  #ifdef INTEL_SYNTAX
  12972.    return AS2 (movzx,%1,%0);
  12973.  #else
  12974. @@ -1675,7 +1423,7 @@
  12975.    ""
  12976.    "*
  12977.  {
  12978. -  if ((!TARGET_386 || REGNO (operands[0]) == 0)
  12979. +  if (((TARGET_486 || TARGET_PENTIUM) || REGNO (operands[0]) == 0)
  12980.        && REG_P (operands[1]) && REGNO (operands[0]) == REGNO (operands[1]))
  12981.      {
  12982.        rtx xops[2];
  12983. @@ -1685,6 +1433,37 @@
  12984.        RET;
  12985.      }
  12986.  
  12987. +    /* intel1 */
  12988. +  if ((((TARGET_486 || TARGET_PENTIUM))) &&
  12989. +       reg_fits_class_p (operands[0], Q_REGS, 0, SImode))
  12990. +  {
  12991. +    rtx xops[2];
  12992. +    if(!reg_overlap_mentioned_p(operands[0],operands[1]))
  12993. +    {
  12994. +      output_asm_insn (AS2 (xor%L0,%0,%0),operands);
  12995. +      output_asm_insn (AS2 (mov%B0,%1,%b0),operands);
  12996. +    }
  12997. +    else
  12998. +    {
  12999. +      xops[0] = operands[0];
  13000. +      xops[1] = gen_rtx (CONST_INT, VOIDmode, 0xff);
  13001. +      output_asm_insn (AS2 (mov%B0,%1,%b0),operands);
  13002. +      output_asm_insn (AS2 (and%L0,%1,%k0), xops);
  13003. +    }
  13004. +    RET;
  13005. +  }
  13006. +
  13007. +  if ((TARGET_486 || TARGET_PENTIUM) && GET_CODE (operands[1]) == REG)
  13008. +  {
  13009. +    rtx xops[2];
  13010. +      xops[0] = operands[0];
  13011. +      operands[1] = gen_rtx (REG, SImode, REGNO (operands[1]));
  13012. +      xops[1] = gen_rtx (CONST_INT, VOIDmode, 0xff);
  13013. +      output_asm_insn (AS2 (mov%L0,%1,%0),operands);
  13014. +      output_asm_insn (AS2 (and%L0,%1,%k0), xops);
  13015. +    RET;
  13016. +  }
  13017. +
  13018.  #ifdef INTEL_SYNTAX
  13019.    return AS2 (movzx,%1,%0);
  13020.  #else
  13021. @@ -2011,15 +1790,15 @@
  13022.  
  13023.  (define_expand "fixuns_truncxfsi2"
  13024.    [(set (match_dup 4)
  13025. -    (match_operand:XF 1 "register_operand" ""))
  13026. +      (match_operand:XF 1 "register_operand" ""))
  13027.     (parallel [(set (match_dup 2)
  13028. -           (fix:DI (fix:XF (match_dup 4))))
  13029. -          (clobber (match_dup 4))
  13030. -          (clobber (match_dup 5))
  13031. -          (clobber (match_dup 6))
  13032. -          (clobber (match_scratch:SI 7 ""))])
  13033. +                 (fix:DI (fix:XF (match_dup 4))))
  13034. +            (clobber (match_dup 4))
  13035. +            (clobber (match_dup 5))
  13036. +            (clobber (match_dup 6))
  13037. +            (clobber (match_scratch:SI 7 ""))])
  13038.     (set (match_operand:SI 0 "general_operand" "")
  13039. -    (match_dup 3))]
  13040. +      (match_dup 3))]
  13041.    "TARGET_80387"
  13042.    "
  13043.  {
  13044. @@ -2076,13 +1855,13 @@
  13045.  
  13046.  (define_expand "fix_truncxfdi2"
  13047.    [(set (match_dup 2)
  13048. -    (match_operand:XF 1 "register_operand" ""))
  13049. +      (match_operand:XF 1 "register_operand" ""))
  13050.     (parallel [(set (match_operand:DI 0 "general_operand" "")
  13051. -           (fix:DI (fix:XF (match_dup 2))))
  13052. -          (clobber (match_dup 2))
  13053. -          (clobber (match_dup 3))
  13054. -          (clobber (match_dup 4))
  13055. -          (clobber (match_scratch:SI 5 ""))])]
  13056. +                 (fix:DI (fix:XF (match_dup 2))))
  13057. +            (clobber (match_dup 2))
  13058. +            (clobber (match_dup 3))
  13059. +            (clobber (match_dup 4))
  13060. +            (clobber (match_scratch:SI 5 ""))])]
  13061.    "TARGET_80387"
  13062.    "
  13063.  {
  13064. @@ -2132,23 +1911,23 @@
  13065.  
  13066.  (define_insn ""
  13067.    [(set (match_operand:DI 0 "general_operand" "=rm")
  13068. -    (fix:DI (fix:XF (match_operand:XF 1 "register_operand" "f"))))
  13069. +      (fix:DI (fix:XF (match_operand:XF 1 "register_operand" "f"))))
  13070.     (clobber (match_dup 1))
  13071.     (clobber (match_operand:SI 2 "memory_operand" "m"))
  13072.     (clobber (match_operand:SI 3 "memory_operand" "m"))
  13073.     (clobber (match_scratch:SI 4 "=&q"))]
  13074.    "TARGET_80387"
  13075. -  "* return output_fix_trunc (insn, operands);")
  13076. +  "* return (char *) output_fix_trunc (insn, operands);")
  13077.  
  13078.  (define_insn ""
  13079. -  [(set (match_operand:DI 0 "general_operand" "=rm")
  13080. -    (fix:DI (fix:DF (match_operand:DF 1 "register_operand" "f"))))
  13081. +   [(set (match_operand:DI 0 "general_operand" "=rm")
  13082. +       (fix:DI (fix:DF (match_operand:DF 1 "register_operand" "f"))))
  13083.     (clobber (match_dup 1))
  13084.     (clobber (match_operand:SI 2 "memory_operand" "m"))
  13085.     (clobber (match_operand:SI 3 "memory_operand" "m"))
  13086.     (clobber (match_scratch:SI 4 "=&q"))]
  13087.    "TARGET_80387"
  13088. -  "* return output_fix_trunc (insn, operands);")
  13089. +  "* return (char *) output_fix_trunc (insn, operands);")
  13090.  
  13091.  (define_insn ""
  13092.    [(set (match_operand:DI 0 "general_operand" "=rm")
  13093. @@ -2158,17 +1937,17 @@
  13094.     (clobber (match_operand:SI 3 "memory_operand" "m"))
  13095.     (clobber (match_scratch:SI 4 "=&q"))]
  13096.    "TARGET_80387"
  13097. -  "* return output_fix_trunc (insn, operands);")
  13098. +  "* return (char *) output_fix_trunc (insn, operands);")
  13099.  
  13100.  ;; Signed MODE_FLOAT conversion to SImode.
  13101.  
  13102.  (define_expand "fix_truncxfsi2"
  13103.    [(parallel [(set (match_operand:SI 0 "general_operand" "")
  13104. -           (fix:SI
  13105. -            (fix:XF (match_operand:XF 1 "register_operand" ""))))
  13106. -          (clobber (match_dup 2))
  13107. -          (clobber (match_dup 3))
  13108. -          (clobber (match_scratch:SI 4 ""))])]
  13109. +                 (fix:SI
  13110. +                  (fix:XF (match_operand:XF 1 "register_operand" ""))))
  13111. +            (clobber (match_dup 2))
  13112. +            (clobber (match_dup 3))
  13113. +            (clobber (match_scratch:SI 4 ""))])]
  13114.    "TARGET_80387"
  13115.    "
  13116.  {
  13117. @@ -2206,21 +1985,21 @@
  13118.  
  13119.  (define_insn ""
  13120.    [(set (match_operand:SI 0 "general_operand" "=rm")
  13121. -    (fix:SI (fix:XF (match_operand:XF 1 "register_operand" "f"))))
  13122. +      (fix:SI (fix:XF (match_operand:XF 1 "register_operand" "f"))))
  13123.     (clobber (match_operand:SI 2 "memory_operand" "m"))
  13124.     (clobber (match_operand:SI 3 "memory_operand" "m"))
  13125.     (clobber (match_scratch:SI 4 "=&q"))]
  13126.    "TARGET_80387"
  13127. -  "* return output_fix_trunc (insn, operands);")
  13128. +  "* return (char *) output_fix_trunc (insn, operands);")
  13129.  
  13130.  (define_insn ""
  13131.    [(set (match_operand:SI 0 "general_operand" "=rm")
  13132. -    (fix:SI (fix:DF (match_operand:DF 1 "register_operand" "f"))))
  13133. +      (fix:SI (fix:DF (match_operand:DF 1 "register_operand" "f"))))
  13134.     (clobber (match_operand:SI 2 "memory_operand" "m"))
  13135.     (clobber (match_operand:SI 3 "memory_operand" "m"))
  13136.     (clobber (match_scratch:SI 4 "=&q"))]
  13137.    "TARGET_80387"
  13138. -  "* return output_fix_trunc (insn, operands);")
  13139. +  "* return (char *) output_fix_trunc (insn, operands);")
  13140.  
  13141.  (define_insn ""
  13142.    [(set (match_operand:SI 0 "general_operand" "=rm")
  13143. @@ -2229,7 +2008,7 @@
  13144.     (clobber (match_operand:SI 3 "memory_operand" "m"))
  13145.     (clobber (match_scratch:SI 4 "=&q"))]
  13146.    "TARGET_80387"
  13147. -  "* return output_fix_trunc (insn, operands);")
  13148. +  "* return (char *) output_fix_trunc (insn, operands);")
  13149.  
  13150.  ;; Conversion between fixed point and floating point.
  13151.  ;; The actual pattern that matches these is at the end of this file.
  13152. @@ -2262,13 +2041,13 @@
  13153.  
  13154.  (define_expand "floatsixf2"
  13155.    [(set (match_operand:XF 0 "register_operand" "")
  13156. -    (float:XF (match_operand:SI 1 "nonimmediate_operand" "")))]
  13157. +      (float:XF (match_operand:SI 1 "nonimmediate_operand" "")))]
  13158.    "TARGET_80387"
  13159.    "")
  13160.  
  13161.  (define_expand "floatdixf2"
  13162.    [(set (match_operand:XF 0 "register_operand" "")
  13163. -    (float:XF (match_operand:DI 1 "nonimmediate_operand" "")))]
  13164. +      (float:XF (match_operand:DI 1 "nonimmediate_operand" "")))]
  13165.    "TARGET_80387"
  13166.    "")
  13167.  
  13168. @@ -2276,7 +2055,7 @@
  13169.  
  13170.  (define_insn ""
  13171.    [(set (match_operand:XF 0 "register_operand" "=f")
  13172. -    (float:XF (match_operand:DI 1 "general_operand" "rm")))]
  13173. +      (float:XF (match_operand:DI 1 "general_operand" "rm")))]
  13174.    "TARGET_80387"
  13175.    "*
  13176.  {
  13177. @@ -2344,7 +2123,7 @@
  13178.  
  13179.  (define_insn ""
  13180.    [(set (match_operand:XF 0 "register_operand" "=f,f")
  13181. -    (float:XF (match_operand:SI 1 "general_operand" "m,!*r")))]
  13182. +      (float:XF (match_operand:SI 1 "general_operand" "m,!*r")))]
  13183.    "TARGET_80387"
  13184.    "*
  13185.  {
  13186. @@ -2379,83 +2158,34 @@
  13187.  ;;- add instructions
  13188.  
  13189.  (define_insn "adddi3"
  13190. -  [(set (match_operand:DI 0 "general_operand" "=&r,ro,o,&r,ro,o,&r,o,o,o")
  13191. -    (plus:DI (match_operand:DI 1 "general_operand" "%0,0,0,o,riF,o,or,riF,riF,o")
  13192. -         (match_operand:DI 2 "general_operand" "o,riF,o,0,0,0,oriF,riF,o,o")))
  13193. -   (clobber (match_scratch:SI 3 "=X,X,&r,X,X,&r,X,X,&r,&r"))]
  13194. +  [(set (match_operand:DI 0 "general_operand" "=&r,ro")
  13195. +    (plus:DI (match_operand:DI 1 "general_operand" "%0,0")
  13196. +         (match_operand:DI 2 "general_operand" "o,riF")))]
  13197.    ""
  13198.    "*
  13199.  {
  13200. -  rtx low[3], high[3], xops[7], temp;
  13201. +  rtx low[3], high[3];
  13202.  
  13203.    CC_STATUS_INIT;
  13204.  
  13205. -  if (rtx_equal_p (operands[0], operands[2]))
  13206. -    {
  13207. -      temp = operands[1];
  13208. -      operands[1] = operands[2];
  13209. -      operands[2] = temp;
  13210. -    }
  13211. -
  13212.    split_di (operands, 3, low, high);
  13213. -  if (!rtx_equal_p (operands[0], operands[1]))
  13214. -    {
  13215. -      xops[0] = high[0];
  13216. -      xops[1] = low[0];
  13217. -      xops[2] = high[1];
  13218. -      xops[3] = low[1];
  13219. -
  13220. -      if (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
  13221. -    {
  13222. -      output_asm_insn (AS2 (mov%L1,%3,%1), xops);
  13223. -      output_asm_insn (AS2 (mov%L0,%2,%0), xops);
  13224. -    }
  13225. -      else
  13226. -    {
  13227. -      xops[4] = high[2];
  13228. -      xops[5] = low[2];
  13229. -      xops[6] = operands[3];
  13230. -      output_asm_insn (AS2 (mov%L6,%3,%6), xops);
  13231. -      output_asm_insn (AS2 (add%L6,%5,%6), xops);
  13232. -      output_asm_insn (AS2 (mov%L1,%6,%1), xops);
  13233. -      output_asm_insn (AS2 (mov%L6,%2,%6), xops);
  13234. -      output_asm_insn (AS2 (adc%L6,%4,%6), xops);
  13235. -      output_asm_insn (AS2 (mov%L0,%6,%0), xops);
  13236. -      RET;
  13237. -    }
  13238. -    }
  13239.  
  13240. -  if (GET_CODE (operands[3]) == REG && GET_CODE (operands[2]) != REG)
  13241. -    {
  13242. -      xops[0] = high[0];
  13243. -      xops[1] = low[0];
  13244. -      xops[2] = high[2];
  13245. -      xops[3] = low[2];
  13246. -      xops[4] = operands[3];
  13247. -
  13248. -      output_asm_insn (AS2 (mov%L4,%3,%4), xops);
  13249. -      output_asm_insn (AS2 (add%L1,%4,%1), xops);
  13250. -      output_asm_insn (AS2 (mov%L4,%2,%4), xops);
  13251. -      output_asm_insn (AS2 (adc%L0,%4,%0), xops);
  13252. -    }
  13253. -
  13254. -  else if (GET_CODE (low[2]) != CONST_INT || INTVAL (low[2]) != 0)
  13255. +  if (GET_CODE (low[2]) != CONST_INT || INTVAL (low[2]) != 0)
  13256.      {
  13257.        output_asm_insn (AS2 (add%L0,%2,%0), low);
  13258.        output_asm_insn (AS2 (adc%L0,%2,%0), high);
  13259.      }
  13260. -
  13261.    else
  13262.      output_asm_insn (AS2 (add%L0,%2,%0), high);
  13263. -
  13264.    RET;
  13265.  }")
  13266.  
  13267.  ;; On a 486, it is faster to do movl/addl than to do a single leal if
  13268.  ;; operands[1] and operands[2] are both registers.
  13269.  
  13270. +; intel1 removed ? from first constraint
  13271.  (define_insn "addsi3"
  13272. -  [(set (match_operand:SI 0 "general_operand" "=?r,rm,r")
  13273. +  [(set (match_operand:SI 0 "general_operand" "=r,rm,r")
  13274.      (plus:SI (match_operand:SI 1 "general_operand" "%r,0,0")
  13275.           (match_operand:SI 2 "general_operand" "ri,ri,rm")))]
  13276.    ""
  13277. @@ -2466,20 +2196,23 @@
  13278.        if (REG_P (operands[2]) && REGNO (operands[0]) == REGNO (operands[2]))
  13279.      return AS2 (add%L0,%1,%0);
  13280.  
  13281. -      if (operands[2] == stack_pointer_rtx)
  13282. -    {
  13283. -      rtx temp;
  13284. +      if (! (TARGET_486 || TARGET_PENTIUM) || ! REG_P (operands[2]))
  13285. +        {
  13286. +      CC_STATUS_INIT;
  13287.  
  13288. -      temp = operands[1];
  13289. -      operands[1] = operands[2];
  13290. -      operands[2] = temp;
  13291. -    }
  13292. +      if (operands[2] == stack_pointer_rtx)
  13293. +        {
  13294. +          rtx temp;
  13295.  
  13296. -      if (operands[2] != stack_pointer_rtx)
  13297. -    {
  13298. -      CC_STATUS_INIT;
  13299. -      operands[1] = SET_SRC (PATTERN (insn));
  13300. -      return AS2 (lea%L0,%a1,%0);
  13301. +          temp = operands[1];
  13302. +          operands[1] = operands[2];
  13303. +          operands[2] = temp;
  13304. +        }
  13305. +      if (operands[2] != stack_pointer_rtx)
  13306. +        {
  13307. +          operands[1] = SET_SRC (PATTERN (insn));
  13308. +          return AS2 (lea%L0,%a1,%0);
  13309. +        }
  13310.      }
  13311.  
  13312.        output_asm_insn (AS2 (mov%L0,%1,%0), operands);
  13313. @@ -2510,24 +2243,23 @@
  13314.        && GET_CODE (operands[2]) == CONST_INT
  13315.        && (INTVAL (operands[2]) & 0xff) == 0)
  13316.      {
  13317. -      int byteval = (INTVAL (operands[2]) >> 8) & 0xff;
  13318.        CC_STATUS_INIT;
  13319.  
  13320. -      if (byteval == 1)
  13321. -    return AS1 (inc%B0,%h0);
  13322. -      else if (byteval == 255)
  13323. -    return AS1 (dec%B0,%h0);
  13324. +       operands[2] = GEN_INT ((INTVAL (operands[2]) >> 8) & 0xff);
  13325. +
  13326. +      if (operands[2] == const1_rtx)
  13327. +      return AS1 (inc%B0,%h0);
  13328. +
  13329. +      if (operands[2] == constm1_rtx)
  13330. +      return AS1 (dec%B0,%h0);
  13331.  
  13332. -      operands[2] = GEN_INT (byteval);
  13333.        return AS2 (add%B0,%2,%h0);
  13334.      }
  13335.  
  13336.    if (operands[2] == const1_rtx)
  13337.      return AS1 (inc%W0,%0);
  13338.  
  13339. -  if (operands[2] == constm1_rtx
  13340. -      || (GET_CODE (operands[2]) == CONST_INT
  13341. -      && INTVAL (operands[2]) == 65535))
  13342. +  if (operands[2] == constm1_rtx)
  13343.      return AS1 (dec%W0,%0);
  13344.  
  13345.    return AS2 (add%W0,%2,%0);
  13346. @@ -2543,9 +2275,7 @@
  13347.    if (operands[2] == const1_rtx)
  13348.      return AS1 (inc%B0,%0);
  13349.  
  13350. -  if (operands[2] == constm1_rtx
  13351. -      || (GET_CODE (operands[2]) == CONST_INT
  13352. -      && INTVAL (operands[2]) == 255))
  13353. +  if (operands[2] == constm1_rtx)
  13354.      return AS1 (dec%B0,%0);
  13355.  
  13356.    return AS2 (add%B0,%2,%0);
  13357. @@ -2578,7 +2308,7 @@
  13358.  
  13359.  ;; addsi3 is faster, so put this after.
  13360.  
  13361. -(define_insn "movsi_lea"
  13362. +(define_insn ""
  13363.    [(set (match_operand:SI 0 "register_operand" "=r")
  13364.          (match_operand:QI 1 "address_operand" "p"))]
  13365.    ""
  13366. @@ -2608,8 +2338,8 @@
  13367.  
  13368.  (define_expand "addxf3"
  13369.    [(set (match_operand:XF 0 "register_operand" "")
  13370. -    (plus:XF (match_operand:XF 1 "nonimmediate_operand" "")
  13371. -         (match_operand:XF 2 "nonimmediate_operand" "")))]
  13372. +      (plus:XF (match_operand:XF 1 "nonimmediate_operand" "")
  13373. +               (match_operand:XF 2 "nonimmediate_operand" "")))]
  13374.    "TARGET_80387"
  13375.    "")
  13376.  
  13377. @@ -2630,66 +2360,23 @@
  13378.  ;;- subtract instructions
  13379.  
  13380.  (define_insn "subdi3"
  13381. -  [(set (match_operand:DI 0 "general_operand" "=&r,ro,&r,o,o")
  13382. -    (minus:DI (match_operand:DI 1 "general_operand" "0,0,roiF,riF,o")
  13383. -          (match_operand:DI 2 "general_operand" "o,riF,roiF,riF,o")))
  13384. -   (clobber (match_scratch:SI 3 "=X,X,X,X,&r"))]
  13385. +  [(set (match_operand:DI 0 "general_operand" "=&r,ro")
  13386. +    (minus:DI (match_operand:DI 1 "general_operand" "0,0")
  13387. +          (match_operand:DI 2 "general_operand" "o,riF")))]
  13388.    ""
  13389.    "*
  13390.  {
  13391. -  rtx low[3], high[3], xops[7];
  13392. +  rtx low[3], high[3];
  13393.  
  13394.    CC_STATUS_INIT;
  13395.  
  13396.    split_di (operands, 3, low, high);
  13397.  
  13398. -  if (!rtx_equal_p (operands[0], operands[1]))
  13399. -    {
  13400. -      xops[0] = high[0];
  13401. -      xops[1] = low[0];
  13402. -      xops[2] = high[1];
  13403. -      xops[3] = low[1];
  13404. -
  13405. -      if (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
  13406. -    {
  13407. -      output_asm_insn (AS2 (mov%L1,%3,%1), xops);
  13408. -      output_asm_insn (AS2 (mov%L0,%2,%0), xops);
  13409. -    }
  13410. -      else
  13411. -    {
  13412. -      xops[4] = high[2];
  13413. -      xops[5] = low[2];
  13414. -      xops[6] = operands[3];
  13415. -      output_asm_insn (AS2 (mov%L6,%3,%6), xops);
  13416. -      output_asm_insn (AS2 (sub%L6,%5,%6), xops);
  13417. -      output_asm_insn (AS2 (mov%L1,%6,%1), xops);
  13418. -      output_asm_insn (AS2 (mov%L6,%2,%6), xops);
  13419. -      output_asm_insn (AS2 (sbb%L6,%4,%6), xops);
  13420. -      output_asm_insn (AS2 (mov%L0,%6,%0), xops);
  13421. -      RET;
  13422. -    }
  13423. -    }
  13424. -
  13425. -  if (GET_CODE (operands[3]) == REG)
  13426. -    {
  13427. -      xops[0] = high[0];
  13428. -      xops[1] = low[0];
  13429. -      xops[2] = high[2];
  13430. -      xops[3] = low[2];
  13431. -      xops[4] = operands[3];
  13432. -
  13433. -      output_asm_insn (AS2 (mov%L4,%3,%4), xops);
  13434. -      output_asm_insn (AS2 (sub%L1,%4,%1), xops);
  13435. -      output_asm_insn (AS2 (mov%L4,%2,%4), xops);
  13436. -      output_asm_insn (AS2 (sbb%L0,%4,%0), xops);
  13437. -    }
  13438. -
  13439. -  else if (GET_CODE (low[2]) != CONST_INT || INTVAL (low[2]) != 0)
  13440. +  if (GET_CODE (low[2]) != CONST_INT || INTVAL (low[2]) != 0)
  13441.      {
  13442.        output_asm_insn (AS2 (sub%L0,%2,%0), low);
  13443.        output_asm_insn (AS2 (sbb%L0,%2,%0), high);
  13444.      }
  13445. -
  13446.    else
  13447.      output_asm_insn (AS2 (sub%L0,%2,%0), high);
  13448.  
  13449. @@ -2721,8 +2408,8 @@
  13450.  
  13451.  (define_expand "subxf3"
  13452.    [(set (match_operand:XF 0 "register_operand" "")
  13453. -    (minus:XF (match_operand:XF 1 "nonimmediate_operand" "")
  13454. -          (match_operand:XF 2 "nonimmediate_operand" "")))]
  13455. +      (minus:XF (match_operand:XF 1 "nonimmediate_operand" "")
  13456. +                (match_operand:XF 2 "nonimmediate_operand" "")))]
  13457.    "TARGET_80387"
  13458.    "")
  13459.  
  13460. @@ -2751,14 +2438,14 @@
  13461.  
  13462.  (define_insn ""
  13463.    [(set (match_operand:HI 0 "general_operand" "=r")
  13464. -    (mult:HI (match_operand:HI 1 "general_operand" "%0")
  13465. +    (mult:SI (match_operand:HI 1 "general_operand" "%0")
  13466.           (match_operand:HI 2 "general_operand" "r")))]
  13467.    "GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) == 0x80"
  13468.    "* return AS2 (imul%W0,%2,%0);")
  13469.  
  13470.  (define_insn "mulhi3"
  13471.    [(set (match_operand:HI 0 "general_operand" "=r,r")
  13472. -    (mult:HI (match_operand:HI 1 "general_operand" "%0,rm")
  13473. +    (mult:SI (match_operand:HI 1 "general_operand" "%0,rm")
  13474.           (match_operand:HI 2 "general_operand" "g,i")))]
  13475.    ""
  13476.    "*
  13477. @@ -2793,58 +2480,21 @@
  13478.    return AS3 (imul%L0,%2,%1,%0);
  13479.  }")
  13480.  
  13481. -(define_insn "umulqihi3"
  13482. +(define_insn ""
  13483.    [(set (match_operand:HI 0 "general_operand" "=a")
  13484. -    (mult:HI (zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "%0"))
  13485. -         (zero_extend:HI (match_operand:QI 2 "nonimmediate_operand" "qm"))))]
  13486. +    (mult:SI (zero_extend:HI
  13487. +          (match_operand:QI 1 "nonimmediate_operand" "%0"))
  13488. +         (zero_extend:HI
  13489. +          (match_operand:QI 2 "nonimmediate_operand" "qm"))))]
  13490.    ""
  13491.    "mul%B0 %2")
  13492.  
  13493. -(define_insn "mulqihi3"
  13494. -  [(set (match_operand:HI 0 "general_operand" "=a")
  13495. -    (mult:HI (sign_extend:HI (match_operand:QI 1 "nonimmediate_operand" "%0"))
  13496. -         (sign_extend:HI (match_operand:QI 2 "nonimmediate_operand" "qm"))))]
  13497. -  ""
  13498. -  "imul%B0 %2")
  13499. -
  13500. -(define_insn "umulsidi3"
  13501. -  [(set (match_operand:DI 0 "register_operand" "=A")
  13502. -    (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "%0"))
  13503. -         (zero_extend:DI (match_operand:SI 2 "nonimmediate_operand" "rm"))))]
  13504. -  "TARGET_WIDE_MULTIPLY"
  13505. -  "mul%L0 %2")
  13506. -
  13507. -(define_insn "mulsidi3"
  13508. -  [(set (match_operand:DI 0 "register_operand" "=A")
  13509. -    (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "%0"))
  13510. -         (sign_extend:DI (match_operand:SI 2 "nonimmediate_operand" "rm"))))]
  13511. -  "TARGET_WIDE_MULTIPLY"
  13512. -  "imul%L0 %2")
  13513. -
  13514. -(define_insn "umulsi3_highpart"
  13515. -  [(set (match_operand:SI 0 "register_operand" "=d")
  13516. -    (truncate:SI (lshiftrt:DI (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "%a"))
  13517. -                       (zero_extend:DI (match_operand:SI 2 "nonimmediate_operand" "rm")))
  13518. -                  (const_int 32))))
  13519. -   (clobber (match_scratch:SI 3 "=a"))]
  13520. -  "TARGET_WIDE_MULTIPLY"
  13521. -  "mul%L0 %2")
  13522. -
  13523. -(define_insn "smulsi3_highpart"
  13524. -  [(set (match_operand:SI 0 "register_operand" "=d")
  13525. -    (truncate:SI (lshiftrt:DI (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "%a"))
  13526. -                       (sign_extend:DI (match_operand:SI 2 "nonimmediate_operand" "rm")))
  13527. -                  (const_int 32))))
  13528. -   (clobber (match_scratch:SI 3 "=a"))]
  13529. -  "TARGET_WIDE_MULTIPLY"
  13530. -  "imul%L0 %2")
  13531. -
  13532.  ;; The patterns that match these are at the end of this file.
  13533.  
  13534.  (define_expand "mulxf3"
  13535.    [(set (match_operand:XF 0 "register_operand" "")
  13536. -    (mult:XF (match_operand:XF 1 "nonimmediate_operand" "")
  13537. -         (match_operand:XF 2 "nonimmediate_operand" "")))]
  13538. +      (mult:XF (match_operand:XF 1 "nonimmediate_operand" "")
  13539. +               (match_operand:XF 2 "nonimmediate_operand" "")))]
  13540.    "TARGET_80387"
  13541.    "")
  13542.  
  13543. @@ -2882,8 +2532,8 @@
  13544.  
  13545.  (define_expand "divxf3"
  13546.    [(set (match_operand:XF 0 "register_operand" "")
  13547. -    (div:XF (match_operand:XF 1 "nonimmediate_operand" "")
  13548. -        (match_operand:XF 2 "nonimmediate_operand" "")))]
  13549. +      (div:XF (match_operand:XF 1 "nonimmediate_operand" "")
  13550. +              (match_operand:XF 2 "nonimmediate_operand" "")))]
  13551.    "TARGET_80387"
  13552.    "")
  13553.  
  13554. @@ -2988,20 +2638,37 @@
  13555.  ;; optional reloads to be generated if op 3 is a pseudo in a stack slot.
  13556.  
  13557.  ;; ??? What if we only change one byte of an offsettable memory reference?
  13558. +;;(define_insn "andsi3"
  13559. +;;  [(set (match_operand:SI 0 "general_operand" "=r,r,rm,r")
  13560. +;;    (and:SI (match_operand:SI 1 "general_operand" "%rm,qm,0,0")
  13561. +;;        (match_operand:SI 2 "general_operand" "L,K,ri,rm")))]
  13562. +;;  ""
  13563. +;;  "*
  13564. +;;{
  13565. +;intel1
  13566.  (define_insn "andsi3"
  13567. -  [(set (match_operand:SI 0 "general_operand" "=r,r,rm,r")
  13568. -    (and:SI (match_operand:SI 1 "general_operand" "%rm,qm,0,0")
  13569. -        (match_operand:SI 2 "general_operand" "L,K,ri,rm")))]
  13570. +  [(set (match_operand:SI 0 "general_operand" "=rm,r,r")
  13571. +    (and:SI (match_operand:SI 1 "general_operand" "0,0,rm")
  13572. +        (match_operand:SI 2 "general_operand" "ri,rm,0")))]
  13573.    ""
  13574.    "*
  13575.  {
  13576. +  /* intel1 */
  13577. +  if (!rtx_equal_p (operands[0], operands[1])
  13578. +      && rtx_equal_p (operands[0], operands[2]))
  13579. +    {
  13580. +      rtx tmp;
  13581. +      tmp = operands[1];
  13582. +      operands[1] = operands[2];
  13583. +      operands[2] = tmp;
  13584. +    }
  13585.    if (GET_CODE (operands[2]) == CONST_INT
  13586.        && ! (GET_CODE (operands[0]) == MEM && MEM_VOLATILE_P (operands[0])))
  13587.      {
  13588.        if (INTVAL (operands[2]) == 0xffff && REG_P (operands[0])
  13589.        && (! REG_P (operands[1])
  13590.            || REGNO (operands[0]) != 0 || REGNO (operands[1]) != 0)
  13591. -      && (TARGET_386 || ! rtx_equal_p (operands[0], operands[1])))
  13592. +      && (! (TARGET_486 || TARGET_PENTIUM) || ! rtx_equal_p (operands[0], operands[1])))
  13593.      {
  13594.        /* ??? tege: Should forget CC_STATUS only if we clobber a
  13595.           remembered operand.  Fix that later.  */
  13596. @@ -3017,7 +2684,7 @@
  13597.        && !(REG_P (operands[1]) && NON_QI_REG_P (operands[1]))
  13598.        && (! REG_P (operands[1])
  13599.            || REGNO (operands[0]) != 0 || REGNO (operands[1]) != 0)
  13600. -      && (TARGET_386 || ! rtx_equal_p (operands[0], operands[1])))
  13601. +      && (! (TARGET_486 || TARGET_PENTIUM) || ! rtx_equal_p (operands[0], operands[1])))
  13602.      {
  13603.        /* ??? tege: Should forget CC_STATUS only if we clobber a
  13604.           remembered operand.  Fix that later.  */
  13605. @@ -3146,14 +2813,23 @@
  13606.  
  13607.  ;;- Bit set (inclusive or) instructions
  13608.  
  13609. +;intel1 added last constaints
  13610.  ;; ??? What if we only change one byte of an offsettable memory reference?
  13611.  (define_insn "iorsi3"
  13612. -  [(set (match_operand:SI 0 "general_operand" "=rm,r")
  13613. -    (ior:SI (match_operand:SI 1 "general_operand" "%0,0")
  13614. -        (match_operand:SI 2 "general_operand" "ri,rm")))]
  13615. +  [(set (match_operand:SI 0 "general_operand" "=rm,r,r")
  13616. +    (ior:SI (match_operand:SI 1 "general_operand" "%0,0,rm")
  13617. +        (match_operand:SI 2 "general_operand" "ri,rm,0")))]
  13618.    ""
  13619.    "*
  13620.  {
  13621. +  /* intel1 */
  13622. +  if (!rtx_equal_p (operands[0], operands[1]))
  13623. +    {
  13624. +      rtx tmp;
  13625. +      tmp = operands[1];
  13626. +      operands[1] = operands[2];
  13627. +      operands[2] = tmp;
  13628. +    }
  13629.    if (GET_CODE (operands[2]) == CONST_INT
  13630.        && ! (GET_CODE (operands[0]) == MEM && MEM_VOLATILE_P (operands[0])))
  13631.      {
  13632. @@ -3183,13 +2859,22 @@
  13633.    return AS2 (or%L0,%2,%0);
  13634.  }")
  13635.  
  13636. +;intel1 added last constraint
  13637.  (define_insn "iorhi3"
  13638. -  [(set (match_operand:HI 0 "general_operand" "=rm,r")
  13639. -    (ior:HI (match_operand:HI 1 "general_operand" "%0,0")
  13640. -        (match_operand:HI 2 "general_operand" "ri,rm")))]
  13641. +  [(set (match_operand:HI 0 "general_operand" "=rm,r,r")
  13642. +    (ior:HI (match_operand:HI 1 "general_operand" "%0,0,rm")
  13643. +        (match_operand:HI 2 "general_operand" "ri,rm,0")))]
  13644.    ""
  13645.    "*
  13646.  {
  13647. +  /* intel1 */
  13648. +  if (!rtx_equal_p (operands[0], operands[1]))
  13649. +    {
  13650. +      rtx tmp;
  13651. +      tmp = operands[1];
  13652. +      operands[1] = operands[2];
  13653. +      operands[2] = tmp;
  13654. +    }
  13655.    if (GET_CODE (operands[2]) == CONST_INT
  13656.        && ! (GET_CODE (operands[0]) == MEM && MEM_VOLATILE_P (operands[0])))
  13657.      {
  13658. @@ -3225,12 +2910,24 @@
  13659.    return AS2 (or%W0,%2,%0);
  13660.  }")
  13661.  
  13662. +;intel1 added last constraint 
  13663.  (define_insn "iorqi3"
  13664. -  [(set (match_operand:QI 0 "general_operand" "=qm,q")
  13665. -    (ior:QI (match_operand:QI 1 "general_operand" "%0,0")
  13666. -        (match_operand:QI 2 "general_operand" "qn,qmn")))]
  13667. +  [(set (match_operand:QI 0 "general_operand" "=qm,q,q")
  13668. +    (ior:QI (match_operand:QI 1 "general_operand" "%0,0,qm")
  13669. +        (match_operand:QI 2 "general_operand" "qn,qmn,0")))]
  13670.    ""
  13671. -  "* return AS2 (or%B0,%2,%0);")
  13672. +  "* 
  13673. +{
  13674. +  /* intel1 */
  13675. +  if (!rtx_equal_p (operands[0], operands[1]))
  13676. +    {
  13677. +      rtx tmp;
  13678. +      tmp = operands[1];
  13679. +      operands[1] = operands[2];
  13680. +      operands[2] = tmp;
  13681. +    }
  13682. +  return AS2 (or%B0,%2,%0);
  13683. +}")
  13684.  
  13685.  ;;- xor instructions
  13686.  
  13687. @@ -3271,13 +2968,22 @@
  13688.    return AS2 (xor%L0,%2,%0);
  13689.  }")
  13690.  
  13691. +;intel1 added last constraint 
  13692.  (define_insn "xorhi3"
  13693. -  [(set (match_operand:HI 0 "general_operand" "=rm,r")
  13694. -    (xor:HI (match_operand:HI 1 "general_operand" "%0,0")
  13695. -        (match_operand:HI 2 "general_operand" "ri,rm")))]
  13696. +  [(set (match_operand:HI 0 "general_operand" "=rm,r,r")
  13697. +    (xor:HI (match_operand:HI 1 "general_operand" "%0,0,rm")
  13698. +        (match_operand:HI 2 "general_operand" "ri,rm,0")))]
  13699.    ""
  13700.    "*
  13701.  {
  13702. +  /* intel1 */
  13703. +  if (!rtx_equal_p (operands[0], operands[1]))
  13704. +    {
  13705. +      rtx tmp;
  13706. +      tmp = operands[1];
  13707. +      operands[1] = operands[2];
  13708. +      operands[2] = tmp;
  13709. +    }
  13710.    if (GET_CODE (operands[2]) == CONST_INT
  13711.        && ! (GET_CODE (operands[0]) == MEM && MEM_VOLATILE_P (operands[0])))
  13712.      {
  13713. @@ -3313,12 +3019,24 @@
  13714.    return AS2 (xor%W0,%2,%0);
  13715.  }")
  13716.  
  13717. +;intel1 added last constraint 
  13718.  (define_insn "xorqi3"
  13719. -  [(set (match_operand:QI 0 "general_operand" "=qm,q")
  13720. -    (xor:QI (match_operand:QI 1 "general_operand" "%0,0")
  13721. -        (match_operand:QI 2 "general_operand" "qn,qm")))]
  13722. -  ""
  13723. -  "* return AS2 (xor%B0,%2,%0);")
  13724. +  [(set (match_operand:QI 0 "general_operand" "=qm,q,q")
  13725. +    (xor:QI (match_operand:QI 1 "general_operand" "%0,0,qm")
  13726. +        (match_operand:QI 2 "general_operand" "qn,qm,0")))]
  13727. +  ""
  13728. +  "* 
  13729. + {
  13730. +  /* intel1 */
  13731. +  if (!rtx_equal_p (operands[0], operands[1]))
  13732. +    {
  13733. +      rtx tmp;
  13734. +      tmp = operands[1];
  13735. +      operands[1] = operands[2];
  13736. +      operands[2] = tmp;
  13737. +    }
  13738. + return AS2 (xor%B0,%2,%0);
  13739. + }")
  13740.  
  13741.  ;;- negation instructions
  13742.  
  13743. @@ -3380,13 +3098,13 @@
  13744.  
  13745.  (define_insn "negxf2"
  13746.    [(set (match_operand:XF 0 "register_operand" "=f")
  13747. -    (neg:XF (match_operand:XF 1 "general_operand" "0")))]
  13748. +      (neg:XF (match_operand:XF 1 "general_operand" "0")))]
  13749.    "TARGET_80387"
  13750.    "fchs")
  13751.  
  13752.  (define_insn ""
  13753.    [(set (match_operand:XF 0 "register_operand" "=f")
  13754. -    (neg:XF (float_extend:XF (match_operand:DF 1 "general_operand" "0"))))]
  13755. +      (neg:XF (float_extend:XF (match_operand:DF 1 "general_operand" "0"))))]
  13756.    "TARGET_80387"
  13757.    "fchs")
  13758.  
  13759. @@ -3396,120 +3114,108 @@
  13760.    [(set (match_operand:SF 0 "register_operand" "=f")
  13761.      (abs:SF (match_operand:SF 1 "general_operand" "0")))]
  13762.    "TARGET_80387"
  13763. -  "fabs")
  13764. +  "fabs"[(set_attr "type" "fpop")])
  13765.  
  13766.  (define_insn "absdf2"
  13767.    [(set (match_operand:DF 0 "register_operand" "=f")
  13768.      (abs:DF (match_operand:DF 1 "general_operand" "0")))]
  13769.    "TARGET_80387"
  13770. -  "fabs")
  13771. +  "fabs"[(set_attr "type" "fpop")])
  13772.  
  13773.  (define_insn ""
  13774.    [(set (match_operand:DF 0 "register_operand" "=f")
  13775.      (abs:DF (float_extend:DF (match_operand:SF 1 "general_operand" "0"))))]
  13776.    "TARGET_80387"
  13777. -  "fabs")
  13778. +  "fabs"[(set_attr "type" "fpop")])
  13779.  
  13780.  (define_insn "absxf2"
  13781.    [(set (match_operand:XF 0 "register_operand" "=f")
  13782. -    (abs:XF (match_operand:XF 1 "general_operand" "0")))]
  13783. +      (abs:XF (match_operand:XF 1 "general_operand" "0")))]
  13784.    "TARGET_80387"
  13785. -  "fabs")
  13786. +  "fabs"[(set_attr "type" "fpop")])
  13787.  
  13788.  (define_insn ""
  13789.    [(set (match_operand:XF 0 "register_operand" "=f")
  13790. -    (abs:XF (float_extend:XF (match_operand:DF 1 "general_operand" "0"))))]
  13791. +      (abs:XF (float_extend:XF (match_operand:DF 1 "general_operand" "0"))))]
  13792.    "TARGET_80387"
  13793. -  "fabs")
  13794. +  "fabs"[(set_attr "type" "fpop")])
  13795.  
  13796.  (define_insn "sqrtsf2"
  13797.    [(set (match_operand:SF 0 "register_operand" "=f")
  13798.      (sqrt:SF (match_operand:SF 1 "general_operand" "0")))]
  13799. -  "! TARGET_NO_FANCY_MATH_387 && TARGET_80387
  13800. -   && (TARGET_IEEE_FP || flag_fast_math) "
  13801. -  "fsqrt")
  13802. +  "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
  13803. +  "fsqrt"[(set_attr "type" "fpop")])
  13804.  
  13805.  (define_insn "sqrtdf2"
  13806.    [(set (match_operand:DF 0 "register_operand" "=f")
  13807.      (sqrt:DF (match_operand:DF 1 "general_operand" "0")))]
  13808. -  "! TARGET_NO_FANCY_MATH_387 && TARGET_80387
  13809. -   && (TARGET_IEEE_FP || flag_fast_math) "
  13810. -  "fsqrt")
  13811. +  "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
  13812. +  "fsqrt"[(set_attr "type" "fpop")])
  13813.  
  13814.  (define_insn ""
  13815.    [(set (match_operand:DF 0 "register_operand" "=f")
  13816.      (sqrt:DF (float_extend:DF
  13817.            (match_operand:SF 1 "general_operand" "0"))))]
  13818. -  "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 
  13819. -   && (TARGET_IEEE_FP || flag_fast_math) "
  13820. -  "fsqrt")
  13821. +  "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
  13822. +  "fsqrt"[(set_attr "type" "fpop")])
  13823.  
  13824.  (define_insn "sqrtxf2"
  13825.    [(set (match_operand:XF 0 "register_operand" "=f")
  13826. -    (sqrt:XF (match_operand:XF 1 "general_operand" "0")))]
  13827. -  "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 
  13828. -   && (TARGET_IEEE_FP || flag_fast_math) "
  13829. -  "fsqrt")
  13830. +      (sqrt:XF (match_operand:XF 1 "general_operand" "0")))]
  13831. +  "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
  13832. +  "fsqrt"[(set_attr "type" "fpop")])
  13833.  
  13834.  (define_insn ""
  13835.    [(set (match_operand:XF 0 "register_operand" "=f")
  13836. -    (sqrt:XF (float_extend:XF
  13837. -          (match_operand:DF 1 "general_operand" "0"))))]
  13838. -  "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 
  13839. -   && (TARGET_IEEE_FP || flag_fast_math) "
  13840. -  "fsqrt")
  13841. +      (sqrt:XF (float_extend:XF
  13842. +                (match_operand:DF 1 "general_operand" "0"))))]
  13843. +  "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
  13844. +  "fsqrt"[(set_attr "type" "fpop")])
  13845.  
  13846.  (define_insn ""
  13847.    [(set (match_operand:XF 0 "register_operand" "=f")
  13848. -    (sqrt:XF (float_extend:XF
  13849. -          (match_operand:SF 1 "general_operand" "0"))))]
  13850. -  "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 
  13851. -   && (TARGET_IEEE_FP || flag_fast_math) "
  13852. -  "fsqrt")
  13853. +      (sqrt:XF (float_extend:XF
  13854. +                (match_operand:SF 1 "general_operand" "0"))))]
  13855. +  "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
  13856. +  "fsqrt"[(set_attr "type" "fpop")])
  13857.  
  13858.  (define_insn "sindf2"
  13859.    [(set (match_operand:DF 0 "register_operand" "=f")
  13860.      (unspec:DF [(match_operand:DF 1 "register_operand" "0")] 1))]
  13861. -  "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 
  13862. -   && (TARGET_IEEE_FP || flag_fast_math) "
  13863. -  "fsin")
  13864. +  "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
  13865. +  "fsin"[(set_attr "type" "fpop")])
  13866.  
  13867.  (define_insn "sinsf2"
  13868.    [(set (match_operand:SF 0 "register_operand" "=f")
  13869.      (unspec:SF [(match_operand:SF 1 "register_operand" "0")] 1))]
  13870. -  "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 
  13871. -   && (TARGET_IEEE_FP || flag_fast_math) "
  13872. -  "fsin")
  13873. +  "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
  13874. +  "fsin"[(set_attr "type" "fpop")])
  13875.  
  13876.  (define_insn ""
  13877.    [(set (match_operand:DF 0 "register_operand" "=f")
  13878.      (unspec:DF [(float_extend:DF
  13879.               (match_operand:SF 1 "register_operand" "0"))] 1))]
  13880. -  "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 
  13881. -   && (TARGET_IEEE_FP || flag_fast_math) "
  13882. -  "fsin")
  13883. +  "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
  13884. +  "fsin"[(set_attr "type" "fpop")])
  13885.  
  13886.  (define_insn "cosdf2"
  13887.    [(set (match_operand:DF 0 "register_operand" "=f")
  13888.      (unspec:DF [(match_operand:DF 1 "register_operand" "0")] 2))]
  13889. -  "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 
  13890. -   && (TARGET_IEEE_FP || flag_fast_math) "
  13891. -  "fcos")
  13892. +  "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
  13893. +  "fcos"[(set_attr "type" "fpop")])
  13894.  
  13895.  (define_insn "cossf2"
  13896.    [(set (match_operand:SF 0 "register_operand" "=f")
  13897.      (unspec:SF [(match_operand:SF 1 "register_operand" "0")] 2))]
  13898. -  "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 
  13899. -   && (TARGET_IEEE_FP || flag_fast_math) "
  13900. -  "fcos")
  13901. +  "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
  13902. +  "fcos"[(set_attr "type" "fpop")])
  13903.  
  13904.  (define_insn ""
  13905.    [(set (match_operand:DF 0 "register_operand" "=f")
  13906.      (unspec:DF [(float_extend:DF
  13907.               (match_operand:SF 1 "register_operand" "0"))] 2))]
  13908. -  "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 
  13909. -   && (TARGET_IEEE_FP || flag_fast_math) "
  13910. -  "fcos")
  13911. +  "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
  13912. +  "fcos"[(set_attr "type" "fpop")])
  13913.  
  13914.  ;;- one complement instructions
  13915.  
  13916. @@ -3660,7 +3366,7 @@
  13917.  {
  13918.    if (REG_P (operands[0]) && REGNO (operands[0]) != REGNO (operands[1]))
  13919.      {
  13920. -      if (!TARGET_386 && INTVAL (operands[2]) == 1)
  13921. +      if ((TARGET_486 || TARGET_PENTIUM) && INTVAL (operands[2]) == 1)
  13922.      {
  13923.        output_asm_insn (AS2 (mov%L0,%1,%0), operands);
  13924.        return AS2 (add%L0,%1,%0);
  13925. @@ -4161,7 +3867,7 @@
  13926.               (const_int 1)
  13927.               (match_operand:SI 2 "general_operand" "r"))
  13928.      (match_operand:SI 3 "const_int_operand" "n"))]
  13929. -  "TARGET_386 && GET_CODE (operands[2]) != CONST_INT"
  13930. +  "! (TARGET_486 || TARGET_PENTIUM) && GET_CODE (operands[2]) != CONST_INT"
  13931.    "*
  13932.  {
  13933.    CC_STATUS_INIT;
  13934. @@ -4179,7 +3885,7 @@
  13935.      (xor:SI (ashift:SI (const_int 1)
  13936.                 (match_operand:SI 1 "general_operand" "r"))
  13937.          (match_operand:SI 2 "general_operand" "0")))]
  13938. -  "TARGET_386 && GET_CODE (operands[1]) != CONST_INT"
  13939. +  "! (TARGET_486 || TARGET_PENTIUM) && GET_CODE (operands[1]) != CONST_INT"
  13940.    "*
  13941.  {
  13942.    CC_STATUS_INIT;
  13943. @@ -4192,7 +3898,7 @@
  13944.      (xor:SI (match_operand:SI 1 "general_operand" "0")
  13945.          (ashift:SI (const_int 1)
  13946.                 (match_operand:SI 2 "general_operand" "r"))))]
  13947. -  "TARGET_386 && GET_CODE (operands[2]) != CONST_INT"
  13948. +  "! (TARGET_486 || TARGET_PENTIUM) && GET_CODE (operands[2]) != CONST_INT"
  13949.    "*
  13950.  {
  13951.    CC_STATUS_INIT;
  13952. @@ -4537,6 +4243,15 @@
  13953.    if (cc_prev_status.flags & CC_Z_IN_NOT_C)
  13954.      return \"jnc %l0\";
  13955.    else
  13956. +  /* intel1 */
  13957. +  if (cc_prev_status.flags & CC_TEST_AX)
  13958. +    {
  13959. +      operands[1] = gen_rtx (REG, SImode, 0);
  13960. +      operands[2] = GEN_INT (0x4000);
  13961. +      output_asm_insn (AS2 (testl,%2,%1), operands);
  13962. +      return AS1 (jne,%l0);
  13963. +    }
  13964. +
  13965.      return \"je %l0\";
  13966.  }")
  13967.  
  13968. @@ -4569,6 +4284,15 @@
  13969.    if (cc_prev_status.flags & CC_Z_IN_NOT_C)
  13970.      return \"jc %l0\";
  13971.    else
  13972. +  /* intel1 */
  13973. +  if (cc_prev_status.flags & CC_TEST_AX)
  13974. +    {
  13975. +      operands[1] = gen_rtx (REG, SImode, 0);
  13976. +      operands[2] = GEN_INT (0x4000);
  13977. +      output_asm_insn (AS2 (testl,%2,%1), operands);
  13978. +      return AS1 (je,%l0);
  13979. +    }
  13980. +
  13981.      return \"jne %l0\";
  13982.  }")
  13983.  
  13984. @@ -4594,6 +4318,13 @@
  13985.    if (TARGET_IEEE_FP && (cc_prev_status.flags & CC_IN_80387))
  13986.      return AS1 (je,%l0);
  13987.  
  13988. +  if (cc_prev_status.flags & CC_TEST_AX)
  13989. +    {
  13990. +      operands[1] = gen_rtx (REG, SImode, 0);
  13991. +      operands[2] = GEN_INT (0x4100);
  13992. +      output_asm_insn (AS2 (testl,%2,%1), operands);
  13993. +      return AS1 (je,%l0);
  13994. +    }
  13995.    OUTPUT_JUMP (\"jg %l0\", \"ja %l0\", NULL_PTR);
  13996.  }")
  13997.  
  13998. @@ -4638,6 +4369,14 @@
  13999.    if (TARGET_IEEE_FP && (cc_prev_status.flags & CC_IN_80387))
  14000.      return AS1 (je,%l0);
  14001.  
  14002. +  /* intel1 */
  14003. +  if (cc_prev_status.flags & CC_TEST_AX)
  14004. +    {
  14005. +      operands[1] = gen_rtx (REG, SImode, 0);
  14006. +      operands[2] = GEN_INT (0x100);
  14007. +      output_asm_insn (AS2 (testl,%2,%1), operands);
  14008. +      return AS1 (jne,%l0);
  14009. +    }
  14010.    OUTPUT_JUMP (\"jl %l0\", \"jb %l0\", \"js %l0\");
  14011.  }")
  14012.  
  14013. @@ -4681,7 +4420,14 @@
  14014.  {
  14015.    if (TARGET_IEEE_FP && (cc_prev_status.flags & CC_IN_80387))
  14016.      return AS1 (je,%l0);
  14017. -
  14018. +  /* intel1 */
  14019. +  if (cc_prev_status.flags & CC_TEST_AX)
  14020. +    {
  14021. +      operands[1] = gen_rtx (REG, SImode, 0);
  14022. +      operands[2] = GEN_INT (0x100);
  14023. +      output_asm_insn (AS2 (testl,%2,%1), operands);
  14024. +      return AS1 (je,%l0);
  14025. +    }
  14026.    OUTPUT_JUMP (\"jge %l0\", \"jae %l0\", \"jns %l0\");
  14027.  }")
  14028.  
  14029. @@ -4725,6 +4471,14 @@
  14030.  {
  14031.    if (TARGET_IEEE_FP && (cc_prev_status.flags & CC_IN_80387))
  14032.      return AS1 (jb,%l0);
  14033. +  /* intel1 */
  14034. +  if (cc_prev_status.flags & CC_TEST_AX)
  14035. +    {
  14036. +      operands[1] = gen_rtx (REG, SImode, 0);
  14037. +      operands[2] = GEN_INT (0x4100);
  14038. +      output_asm_insn (AS2 (testl,%2,%1), operands);
  14039. +      return AS1 (jne,%l0);
  14040. +    }
  14041.  
  14042.    OUTPUT_JUMP (\"jle %l0\", \"jbe %l0\", NULL_PTR);
  14043.  }")
  14044. @@ -4762,6 +4516,14 @@
  14045.    if (cc_prev_status.flags & CC_Z_IN_NOT_C)
  14046.      return \"jc %l0\";
  14047.    else
  14048. +  /* intel1 */
  14049. +  if (cc_prev_status.flags & CC_TEST_AX)
  14050. +    {
  14051. +      operands[1] = gen_rtx (REG, SImode, 0);
  14052. +      operands[2] = GEN_INT (0x4000);
  14053. +      output_asm_insn (AS2 (testl,%2,%1), operands);
  14054. +      return AS1 (je,%l0);
  14055. +    }
  14056.      return \"jne %l0\";
  14057.  }")
  14058.  
  14059. @@ -4777,6 +4539,14 @@
  14060.    if (cc_prev_status.flags & CC_Z_IN_NOT_C)
  14061.      return \"jnc %l0\";
  14062.    else
  14063. +  /* intel1 */
  14064. +  if (cc_prev_status.flags & CC_TEST_AX)
  14065. +    {
  14066. +      operands[1] = gen_rtx (REG, SImode, 0);
  14067. +      operands[2] = GEN_INT (0x4000);
  14068. +      output_asm_insn (AS2 (testl,%2,%1), operands);
  14069. +      return AS1 (jne,%l0);
  14070. +    }
  14071.      return \"je %l0\";
  14072.  }")
  14073.  
  14074. @@ -4791,7 +4561,14 @@
  14075.  {
  14076.    if (TARGET_IEEE_FP && (cc_prev_status.flags & CC_IN_80387))
  14077.      return AS1 (jne,%l0);
  14078. -
  14079. +  /* intel1 */
  14080. +  if (cc_prev_status.flags & CC_TEST_AX)
  14081. +    {
  14082. +      operands[1] = gen_rtx (REG, SImode, 0);
  14083. +      operands[2] = GEN_INT (0x4100);
  14084. +      output_asm_insn (AS2 (testl,%2,%1), operands);
  14085. +      return AS1 (jne,%l0);
  14086. +    }
  14087.    OUTPUT_JUMP (\"jle %l0\", \"jbe %l0\", NULL_PTR);
  14088.  }")
  14089.  
  14090. @@ -4815,6 +4592,14 @@
  14091.  {
  14092.    if (TARGET_IEEE_FP && (cc_prev_status.flags & CC_IN_80387))
  14093.      return AS1 (jne,%l0);
  14094. +  /* intel1 */
  14095. +  if (cc_prev_status.flags & CC_TEST_AX)
  14096. +    {
  14097. +      operands[1] = gen_rtx (REG, SImode, 0);
  14098. +      operands[2] = GEN_INT (0x100);
  14099. +      output_asm_insn (AS2 (testl,%2,%1), operands);
  14100. +      return AS1 (je,%l0);
  14101. +    }
  14102.  
  14103.    OUTPUT_JUMP (\"jge %l0\", \"jae %l0\", \"jns %l0\");
  14104.  }")
  14105. @@ -4839,7 +4624,14 @@
  14106.  {
  14107.    if (TARGET_IEEE_FP && (cc_prev_status.flags & CC_IN_80387))
  14108.      return AS1 (jne,%l0);
  14109. -
  14110. +  /* intel1 */
  14111. +  if (cc_prev_status.flags & CC_TEST_AX)
  14112. +    {
  14113. +      operands[1] = gen_rtx (REG, SImode, 0);
  14114. +      operands[2] = GEN_INT (0x100);
  14115. +      output_asm_insn (AS2 (testl,%2,%1), operands);
  14116. +      return AS1 (jne,%l0);
  14117. +    }
  14118.    OUTPUT_JUMP (\"jl %l0\", \"jb %l0\", \"js %l0\");
  14119.  }")
  14120.  
  14121. @@ -4864,6 +4656,14 @@
  14122.    if (TARGET_IEEE_FP && (cc_prev_status.flags & CC_IN_80387))
  14123.      return AS1 (jae,%l0);
  14124.  
  14125. +  /* intel1 */
  14126. +  if (cc_prev_status.flags & CC_TEST_AX)
  14127. +    {
  14128. +      operands[1] = gen_rtx (REG, SImode, 0);
  14129. +      operands[2] = GEN_INT (0x4100);
  14130. +      output_asm_insn (AS2 (testl,%2,%1), operands);
  14131. +      return AS1 (je,%l0);
  14132. +    }
  14133.    OUTPUT_JUMP (\"jg %l0\", \"ja %l0\", NULL_PTR);
  14134.  }")
  14135.  
  14136. @@ -5210,42 +5010,126 @@
  14137.    "!HALF_PIC_P ()"
  14138.    "call %P1")
  14139.  
  14140. -;; Call subroutine returning any type.
  14141. -
  14142.  (define_expand "untyped_call"
  14143. -  [(parallel [(call (match_operand 0 "" "")
  14144. +  [(parallel [(call (match_operand:QI 0 "indirect_operand" "")
  14145.              (const_int 0))
  14146. -          (match_operand 1 "" "")
  14147. +          (match_operand:BLK 1 "memory_operand" "")
  14148.            (match_operand 2 "" "")])]
  14149.    ""
  14150.    "
  14151.  {
  14152. -  int i;
  14153. +  rtx addr;
  14154. +
  14155. +  if (flag_pic)
  14156. +    current_function_uses_pic_offset_table = 1;
  14157. +
  14158. +  /* With half-pic, force the address into a register.  */
  14159. +  addr = XEXP (operands[0], 0);
  14160. +  if (GET_CODE (addr) != REG && HALF_PIC_P () && !CONSTANT_ADDRESS_P (addr))
  14161. +    XEXP (operands[0], 0) = force_reg (Pmode, addr);
  14162.  
  14163. -  emit_call_insn (gen_call (operands[0], const0_rtx, NULL, const0_rtx));
  14164. +  operands[1] = change_address (operands[1], DImode, XEXP (operands[1], 0));
  14165. +  if (! expander_call_insn_operand (operands[1], QImode))
  14166. +    operands[1]
  14167. +      = change_address (operands[1], VOIDmode,
  14168. +            copy_to_mode_reg (Pmode, XEXP (operands[1], 0)));
  14169. +}")
  14170. +
  14171. +(define_insn ""
  14172. +  [(call (match_operand:QI 0 "call_insn_operand" "m")
  14173. +     (const_int 0))
  14174. +   (match_operand:DI 1 "memory_operand" "o")
  14175. +   (match_operand 2 "" "")]
  14176. +  ""
  14177. +  "*
  14178. +{
  14179. +  rtx addr = operands[1];
  14180.  
  14181. -  for (i = 0; i < XVECLEN (operands[2], 0); i++)
  14182. +  if (GET_CODE (operands[0]) == MEM
  14183. +      && ! CONSTANT_ADDRESS_P (XEXP (operands[0], 0)))
  14184.      {
  14185. -      rtx set = XVECEXP (operands[2], 0, i);
  14186. -      emit_move_insn (SET_DEST (set), SET_SRC (set));
  14187. +      operands[0] = XEXP (operands[0], 0);
  14188. +      output_asm_insn (AS1 (call,%*%0), operands);
  14189.      }
  14190. +  else
  14191. +    output_asm_insn (AS1 (call,%P0), operands);
  14192.  
  14193. -  /* The optimizer does not know that the call sets the function value
  14194. -     registers we stored in the result block.  We avoid problems by
  14195. -     claiming that all hard registers are used and clobbered at this
  14196. -     point.  */
  14197. -  emit_insn (gen_blockage ());
  14198. +  operands[2] = gen_rtx (REG, SImode, 0);
  14199. +  output_asm_insn (AS2 (mov%L2,%2,%1), operands);
  14200.  
  14201. -  DONE;
  14202. +  operands[2] = gen_rtx (REG, SImode, 1);
  14203. +  operands[1] = adj_offsettable_operand (addr, 4);
  14204. +  output_asm_insn (AS2 (mov%L2,%2,%1), operands);
  14205. +
  14206. +  operands[1] = adj_offsettable_operand (addr, 8);
  14207. +  return AS1 (fnsave,%1);
  14208.  }")
  14209.  
  14210. -;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and
  14211. -;; all of memory.  This blocks insns from being moved across this point.
  14212. +(define_insn ""
  14213. +  [(call (mem:QI (match_operand:SI 0 "symbolic_operand" ""))
  14214. +     (const_int 0))
  14215. +   (match_operand:DI 1 "memory_operand" "o")
  14216. +   (match_operand 2 "" "")]
  14217. +  "!HALF_PIC_P ()"
  14218. +  "*
  14219. +{
  14220. +  rtx addr = operands[1];
  14221. +
  14222. +  output_asm_insn (AS1 (call,%P0), operands);
  14223.  
  14224. -(define_insn "blockage"
  14225. -  [(unspec_volatile [(const_int 0)] 0)]
  14226. +  operands[2] = gen_rtx (REG, SImode, 0);
  14227. +  output_asm_insn (AS2 (mov%L2,%2,%1), operands);
  14228. +
  14229. +  operands[2] = gen_rtx (REG, SImode, 1);
  14230. +  operands[1] = adj_offsettable_operand (addr, 4);
  14231. +  output_asm_insn (AS2 (mov%L2,%2,%1), operands);
  14232. +
  14233. +  operands[1] = adj_offsettable_operand (addr, 8);
  14234. +  return AS1 (fnsave,%1);
  14235. +}")
  14236. +
  14237. +;; We use fnsave and frstor to save and restore the floating point result.
  14238. +;; These are expensive instructions and require a large space to save the
  14239. +;; FPU state.  An more complicated alternative is to use fnstenv to store
  14240. +;; the FPU environment and test whether the stack top is valid.  Store the
  14241. +;; result of the test, and if it is valid, pop and save the value.  The
  14242. +;; untyped_return would check the test and optionally push the saved value.
  14243. +
  14244. +(define_expand "untyped_return"
  14245. +  [(match_operand:BLK 0 "memory_operand" "")
  14246. +   (match_operand 1 "" "")]
  14247.    ""
  14248. -  "")
  14249. +  "
  14250. +{
  14251. +  rtx valreg1 = gen_rtx (REG, SImode, 0);
  14252. +  rtx valreg2 = gen_rtx (REG, SImode, 1);
  14253. +  rtx result = operands[0];
  14254. +
  14255. +  /* Restore the FPU state.  */
  14256. +  emit_insn (gen_update_return (change_address (result, SImode,
  14257. +                        plus_constant (XEXP (result, 0),
  14258. +                                   8))));
  14259. +
  14260. +  /* Reload the function value registers.  */
  14261. +  emit_move_insn (valreg1, change_address (result, SImode, XEXP (result, 0)));
  14262. +  emit_move_insn (valreg2,
  14263. +          change_address (result, SImode,
  14264. +                  plus_constant (XEXP (result, 0), 4)));
  14265. +
  14266. +  /* Put USE insns before the return.  */
  14267. +  emit_insn (gen_rtx (USE, VOIDmode, valreg1));
  14268. +  emit_insn (gen_rtx (USE, VOIDmode, valreg2));
  14269. +
  14270. +  /* Construct the return.  */
  14271. +  expand_null_return ();
  14272. +
  14273. +  DONE;
  14274. +}")
  14275. +
  14276. +(define_insn "update_return"
  14277. +  [(unspec:SI [(match_operand:SI 0 "memory_operand" "m")] 0)]
  14278. +  ""
  14279. +  "frstor %0")
  14280.  
  14281.  ;; Insn emitted into the body of a function to return from a function.
  14282.  ;; This is only done if the function's epilogue is known to be simple.
  14283. @@ -5294,7 +5178,7 @@
  14284.  ;; It might seem that operands 0 & 1 could use predicate register_operand.
  14285.  ;; But strength reduction might offset the MEM expression.  So we let
  14286.  ;; reload put the address into %edi & %esi.
  14287. -
  14288. +;; intel1 "e" used to be "S"
  14289.  (define_insn ""
  14290.    [(set (mem:BLK (match_operand:SI 0 "address_operand" "D"))
  14291.      (mem:BLK (match_operand:SI 1 "address_operand" "S")))
  14292. @@ -5370,6 +5254,7 @@
  14293.  ;; possible to know that the length is non-zero, and to avoid the extra
  14294.  ;; code to handle zero-length compares.
  14295.  
  14296. +;; intel1 "e" used to be "S"
  14297.  (define_insn ""
  14298.    [(set (match_operand:SI 0 "general_operand" "=&r")
  14299.      (compare:SI (mem:BLK (match_operand:SI 1 "address_operand" "S"))
  14300. @@ -5406,6 +5291,7 @@
  14301.    RET;
  14302.  }")
  14303.  
  14304. +;; intel1 "e" used to be "S"
  14305.  (define_insn ""
  14306.    [(set (cc0)
  14307.      (compare:SI (mem:BLK (match_operand:SI 0 "address_operand" "S"))
  14308. @@ -5457,19 +5343,19 @@
  14309.    output_asm_insn (AS2 (bsf%L0,%1,%0), xops);
  14310.  #ifdef LOCAL_LABEL_PREFIX
  14311.    sprintf (buffer, \"jnz %sLFFSSI%d\",
  14312. -       LOCAL_LABEL_PREFIX, ffssi_label_number);
  14313. +         LOCAL_LABEL_PREFIX, ffssi_label_number);
  14314.  #else
  14315.    sprintf (buffer, \"jnz %sLFFSSI%d\",
  14316. -       \"\", ffssi_label_number);
  14317. +         \"\", ffssi_label_number);
  14318.  #endif
  14319.    output_asm_insn (buffer, xops);
  14320.    output_asm_insn (AS2 (mov%L0,%2,%0), xops);
  14321.  #ifdef LOCAL_LABEL_PREFIX
  14322.    sprintf (buffer, \"%sLFFSSI%d:\",
  14323. -       LOCAL_LABEL_PREFIX, ffssi_label_number);
  14324. +         LOCAL_LABEL_PREFIX, ffssi_label_number);
  14325.  #else
  14326.    sprintf (buffer, \"%sLFFSSI%d:\",
  14327. -       \"\", ffssi_label_number);
  14328. +         \"\", ffssi_label_number);
  14329.  #endif
  14330.    output_asm_insn (buffer, xops);
  14331.  
  14332. @@ -5503,19 +5389,19 @@
  14333.    output_asm_insn (AS2 (bsf%W0,%1,%0), xops);
  14334.  #ifdef LOCAL_LABEL_PREFIX
  14335.    sprintf (buffer, \"jnz %sLFFSHI%d\",
  14336. -       LOCAL_LABEL_PREFIX, ffshi_label_number);
  14337. +         LOCAL_LABEL_PREFIX, ffshi_label_number);
  14338.  #else
  14339.    sprintf (buffer, \"jnz %sLFFSHI%d\",
  14340. -       \"\", ffshi_label_number);
  14341. +         \"\", ffshi_label_number);
  14342.  #endif
  14343.    output_asm_insn (buffer, xops);
  14344.    output_asm_insn (AS2 (mov%W0,%2,%0), xops);
  14345.  #ifdef LOCAL_LABEL_PREFIX
  14346.    sprintf (buffer, \"%sLFFSHI%d:\",
  14347. -       LOCAL_LABEL_PREFIX, ffshi_label_number);
  14348. +         LOCAL_LABEL_PREFIX, ffshi_label_number);
  14349.  #else
  14350.    sprintf (buffer, \"%sLFFSHI%d:\",
  14351. -       \"\", ffshi_label_number);
  14352. +         \"\", ffshi_label_number);
  14353.  #endif
  14354.    output_asm_insn (buffer, xops);
  14355.  
  14356. @@ -5530,14 +5416,23 @@
  14357.  ;; the other operand a conversion.  The conversion may be SFmode or
  14358.  ;; SImode if the target mode DFmode, but only SImode if the target mode
  14359.  ;; is SFmode.
  14360. -
  14361. +;; intel1 2 changed from nonimmediate operand to general operand
  14362.  (define_insn ""
  14363.    [(set (match_operand:DF 0 "register_operand" "=f,f")
  14364.      (match_operator:DF 3 "binary_387_op"
  14365.              [(match_operand:DF 1 "nonimmediate_operand" "0,fm")
  14366. -             (match_operand:DF 2 "nonimmediate_operand" "fm,0")]))]
  14367. +             (match_operand:DF 2 "general_operand" "fm,0")]))]
  14368.    "TARGET_80387"
  14369. -  "* return output_387_binary_op (insn, operands);")
  14370. +  "* return (char *) output_387_binary_op (insn, operands);"
  14371. +  [(set (attr "type") 
  14372. +        (cond [(match_operand:DF 3 "is_mul" "") 
  14373. +                 (const_string "fpop")
  14374. +               (match_operand:DF 3 "is_div" "") 
  14375. +                 (const_string "fpdiv")
  14376. +              ]
  14377. +               (const_string "fpop")
  14378. +        )
  14379. +  )])
  14380.  
  14381.  (define_insn ""
  14382.    [(set (match_operand:DF 0 "register_operand" "=f")
  14383. @@ -5545,7 +5440,7 @@
  14384.         [(float:DF (match_operand:SI 1 "general_operand" "rm"))
  14385.          (match_operand:DF 2 "general_operand" "0")]))]
  14386.    "TARGET_80387"
  14387. -  "* return output_387_binary_op (insn, operands);")
  14388. +  "* return (char *) output_387_binary_op (insn, operands);")
  14389.  
  14390.  (define_insn ""
  14391.    [(set (match_operand:XF 0 "register_operand" "=f,f")
  14392. @@ -5553,7 +5448,7 @@
  14393.              [(match_operand:XF 1 "nonimmediate_operand" "0,f")
  14394.               (match_operand:XF 2 "nonimmediate_operand" "f,0")]))]
  14395.    "TARGET_80387"
  14396. -  "* return output_387_binary_op (insn, operands);")
  14397. +  "* return (char *) output_387_binary_op (insn, operands);")
  14398.  
  14399.  (define_insn ""
  14400.    [(set (match_operand:XF 0 "register_operand" "=f")
  14401. @@ -5561,7 +5456,7 @@
  14402.         [(float:XF (match_operand:SI 1 "general_operand" "rm"))
  14403.          (match_operand:XF 2 "general_operand" "0")]))]
  14404.    "TARGET_80387"
  14405. -  "* return output_387_binary_op (insn, operands);")
  14406. +  "* return (char *) output_387_binary_op (insn, operands);")
  14407.  
  14408.  (define_insn ""
  14409.    [(set (match_operand:XF 0 "register_operand" "=f,f")
  14410. @@ -5569,7 +5464,7 @@
  14411.         [(float_extend:XF (match_operand:SF 1 "general_operand" "fm,0"))
  14412.          (match_operand:XF 2 "general_operand" "0,f")]))]
  14413.    "TARGET_80387"
  14414. -  "* return output_387_binary_op (insn, operands);")
  14415. +  "* return (char *) output_387_binary_op (insn, operands);")
  14416.  
  14417.  (define_insn ""
  14418.    [(set (match_operand:XF 0 "register_operand" "=f")
  14419. @@ -5577,7 +5472,7 @@
  14420.        [(match_operand:XF 1 "general_operand" "0")
  14421.         (float:XF (match_operand:SI 2 "general_operand" "rm"))]))]
  14422.    "TARGET_80387"
  14423. -  "* return output_387_binary_op (insn, operands);")
  14424. +  "* return (char *) output_387_binary_op (insn, operands);")
  14425.  
  14426.  (define_insn ""
  14427.    [(set (match_operand:XF 0 "register_operand" "=f,f")
  14428. @@ -5585,8 +5480,18 @@
  14429.        [(match_operand:XF 1 "general_operand" "0,f")
  14430.         (float_extend:XF
  14431.          (match_operand:SF 2 "general_operand" "fm,0"))]))]
  14432. +
  14433.    "TARGET_80387"
  14434. -  "* return output_387_binary_op (insn, operands);")
  14435. +  "* return (char *) output_387_binary_op (insn, operands);"
  14436. +  [(set (attr "type") 
  14437. +        (cond [(match_operand:DF 3 "is_mul" "") 
  14438. +                 (const_string "fpop")
  14439. +               (match_operand:DF 3 "is_div" "") 
  14440. +                 (const_string "fpdiv")
  14441. +              ]
  14442. +               (const_string "fpop")
  14443. +        )
  14444. +  )])
  14445.  
  14446.  (define_insn ""
  14447.    [(set (match_operand:DF 0 "register_operand" "=f,f")
  14448. @@ -5594,7 +5499,16 @@
  14449.         [(float_extend:DF (match_operand:SF 1 "general_operand" "fm,0"))
  14450.          (match_operand:DF 2 "general_operand" "0,f")]))]
  14451.    "TARGET_80387"
  14452. -  "* return output_387_binary_op (insn, operands);")
  14453. +  "* return (char *) output_387_binary_op (insn, operands);"
  14454. +  [(set (attr "type") 
  14455. +        (cond [(match_operand:DF 3 "is_mul" "") 
  14456. +                 (const_string "fpop")
  14457. +               (match_operand:DF 3 "is_div" "") 
  14458. +                 (const_string "fpdiv")
  14459. +              ]
  14460. +               (const_string "fpop")
  14461. +        )
  14462. +  )])
  14463.  
  14464.  (define_insn ""
  14465.    [(set (match_operand:DF 0 "register_operand" "=f")
  14466. @@ -5602,7 +5516,16 @@
  14467.        [(match_operand:DF 1 "general_operand" "0")
  14468.         (float:DF (match_operand:SI 2 "general_operand" "rm"))]))]
  14469.    "TARGET_80387"
  14470. -  "* return output_387_binary_op (insn, operands);")
  14471. +  "* return (char *) output_387_binary_op (insn, operands);"
  14472. +  [(set (attr "type") 
  14473. +        (cond [(match_operand:DF 3 "is_mul" "") 
  14474. +                 (const_string "fpop")
  14475. +               (match_operand:DF 3 "is_div" "") 
  14476. +                 (const_string "fpdiv")
  14477. +              ]
  14478. +               (const_string "fpop")
  14479. +        )
  14480. +  )])
  14481.  
  14482.  (define_insn ""
  14483.    [(set (match_operand:DF 0 "register_operand" "=f,f")
  14484. @@ -5611,15 +5534,34 @@
  14485.         (float_extend:DF
  14486.          (match_operand:SF 2 "general_operand" "fm,0"))]))]
  14487.    "TARGET_80387"
  14488. -  "* return output_387_binary_op (insn, operands);")
  14489. +  "* return (char *) output_387_binary_op (insn, operands);"
  14490. +  [(set (attr "type") 
  14491. +        (cond [(match_operand:DF 3 "is_mul" "") 
  14492. +                 (const_string "fpop")
  14493. +               (match_operand:DF 3 "is_div" "") 
  14494. +                 (const_string "fpdiv")
  14495. +              ]
  14496. +               (const_string "fpop")
  14497. +        )
  14498. +  )])
  14499.  
  14500. +;; intel1 1 and 2 changed from nonimmediate operand to general operand
  14501.  (define_insn ""
  14502.    [(set (match_operand:SF 0 "register_operand" "=f,f")
  14503.      (match_operator:SF 3 "binary_387_op"
  14504. -            [(match_operand:SF 1 "nonimmediate_operand" "0,fm")
  14505. -             (match_operand:SF 2 "nonimmediate_operand" "fm,0")]))]
  14506. +            [(match_operand:SF 1 "general_operand" "0,fm")
  14507. +             (match_operand:SF 2 "general_operand" "fm,0")]))]
  14508.    "TARGET_80387"
  14509. -  "* return output_387_binary_op (insn, operands);")
  14510. +  "* return (char *) output_387_binary_op (insn, operands);"
  14511. +  [(set (attr "type") 
  14512. +        (cond [(match_operand:DF 3 "is_mul" "") 
  14513. +                 (const_string "fpop")
  14514. +               (match_operand:DF 3 "is_div" "") 
  14515. +                 (const_string "fpdiv")
  14516. +              ]
  14517. +               (const_string "fpop")
  14518. +        )
  14519. +  )])
  14520.  
  14521.  (define_insn ""
  14522.    [(set (match_operand:SF 0 "register_operand" "=f")
  14523. @@ -5627,7 +5569,16 @@
  14524.        [(float:SF (match_operand:SI 1 "general_operand" "rm"))
  14525.         (match_operand:SF 2 "general_operand" "0")]))]
  14526.    "TARGET_80387"
  14527. -  "* return output_387_binary_op (insn, operands);")
  14528. +  "* return (char *) output_387_binary_op (insn, operands);"
  14529. +  [(set (attr "type") 
  14530. +        (cond [(match_operand:DF 3 "is_mul" "") 
  14531. +                 (const_string "fpop")
  14532. +               (match_operand:DF 3 "is_div" "") 
  14533. +                 (const_string "fpdiv")
  14534. +              ]
  14535. +               (const_string "fpop")
  14536. +        )
  14537. +  )])
  14538.  
  14539.  (define_insn ""
  14540.    [(set (match_operand:SF 0 "register_operand" "=f")
  14541. @@ -5635,7 +5586,16 @@
  14542.        [(match_operand:SF 1 "general_operand" "0")
  14543.         (float:SF (match_operand:SI 2 "general_operand" "rm"))]))]
  14544.    "TARGET_80387"
  14545. -  "* return output_387_binary_op (insn, operands);")
  14546. +  "* return (char *) output_387_binary_op (insn, operands);"
  14547. +  [(set (attr "type") 
  14548. +        (cond [(match_operand:DF 3 "is_mul" "") 
  14549. +                 (const_string "fpop")
  14550. +               (match_operand:DF 3 "is_div" "") 
  14551. +                 (const_string "fpdiv")
  14552. +              ]
  14553. +               (const_string "fpop")
  14554. +        )
  14555. +  )])
  14556.  
  14557.  (define_expand "strlensi"
  14558.    [(parallel [(set (match_dup 4)
  14559. @@ -5677,3 +5637,812 @@
  14560.    output_asm_insn (AS2 (mov%L0,%1,%0), xops);
  14561.    return \"repnz\;scas%B2\";
  14562.  }")
  14563. +
  14564. +;; intel1 peepholes
  14565. +;; change fstp mem1
  14566. +;;        fld  mem1
  14567. +;;        fop  mem2
  14568. +;; to
  14569. +;;        fst  mem1
  14570. +;;        fop  mem2
  14571. +
  14572. +(define_peephole
  14573. + [(set (match_operand:DF 0 "memory_operand" "g")
  14574. +       (reg:DF 8))
  14575. +  (set (reg:DF 8)
  14576. +       (match_operand:DF 1 "memory_operand" "g"))
  14577. +  (set (reg:DF 8)
  14578. +    (mult:DF (reg:DF 8)
  14579. +         (match_dup 0)))
  14580. + ]
  14581. + "TARGET_80387"
  14582. + "*
  14583. + {
  14584. +  extern int flag_float_store;
  14585. +  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  14586. +    {
  14587. +      if (flag_float_store)
  14588. +        {
  14589. +          output_asm_insn (AS1 (fstpl,%0),operands);
  14590. +          output_asm_insn (AS1 (fldl,%1),operands);
  14591. +          return AS1(fmull,%0);
  14592. +        }
  14593. +      output_asm_insn (AS1 (fstl,%0),operands);
  14594. +      return AS1(fmull,%1);
  14595. +    }
  14596. +  else
  14597. +    {
  14598. +      output_asm_insn (AS1 (fstl,%0),operands);
  14599. +      output_asm_insn (AS1 (fldl,%1),operands);
  14600. +      return AS1(fmull,%0);
  14601. +    }
  14602. + }"
  14603. +);
  14604. +(define_peephole
  14605. + [(set (match_operand:DF 0 "memory_operand" "g")
  14606. +       (reg:DF 8))
  14607. +  (set (reg:DF 8)
  14608. +       (match_operand:DF 1 "memory_operand" "g"))
  14609. +  (set (reg:DF 8)
  14610. +    (plus:DF (reg:DF 8)
  14611. +         (match_dup 0)))
  14612. + ]
  14613. + "TARGET_80387"
  14614. + "*
  14615. + {
  14616. +  extern int flag_float_store;
  14617. +  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  14618. +    {
  14619. +      if (flag_float_store)
  14620. +        {
  14621. +          output_asm_insn (AS1 (fstpl,%0),operands);
  14622. +          output_asm_insn (AS1 (fldl,%1),operands);
  14623. +          return AS1(faddl,%0);
  14624. +        }
  14625. +      output_asm_insn (AS1 (fstl,%0),operands);
  14626. +      return AS1(faddl,%1);
  14627. +    }
  14628. +  else
  14629. +    {
  14630. +      output_asm_insn (AS1 (fstl,%0),operands);
  14631. +      output_asm_insn (AS1 (fldl,%1),operands);
  14632. +      return AS1(faddl,%0);
  14633. +    }
  14634. + }"
  14635. +);
  14636. +(define_peephole
  14637. + [(set (match_operand:DF 0 "memory_operand" "g")
  14638. +       (reg:DF 8))
  14639. +  (set (reg:DF 8)
  14640. +       (match_operand:DF 1 "memory_operand" "g"))
  14641. +  (set (reg:DF 8)
  14642. +    (minus:DF (reg:DF 8)
  14643. +         (match_dup 0)))
  14644. + ]
  14645. + "TARGET_80387"
  14646. + "*
  14647. + {
  14648. +  extern int flag_float_store;
  14649. +  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  14650. +    {
  14651. +      if (flag_float_store)
  14652. +        {
  14653. +          output_asm_insn (AS1 (fstpl,%0),operands);
  14654. +          output_asm_insn (AS1 (fldl,%1),operands);
  14655. +          return AS1(fsubl,%0);
  14656. +        }
  14657. +      output_asm_insn (AS1 (fstl,%0),operands);
  14658. +      return AS1(fsubrl,%1);
  14659. +    }
  14660. +  else
  14661. +    {
  14662. +      output_asm_insn (AS1 (fstl,%0),operands);
  14663. +      output_asm_insn (AS1 (fldl,%1),operands);
  14664. +      return AS1(fsubl,%0);
  14665. +    }
  14666. + }"
  14667. +);
  14668. +(define_peephole
  14669. + [(set (match_operand:DF 0 "memory_operand" "g")
  14670. +       (reg:DF 8))
  14671. +  (set (reg:DF 8)
  14672. +       (match_operand:DF 1 "memory_operand" "g"))
  14673. +  (set (reg:DF 8)
  14674. +    (div:DF (reg:DF 8)
  14675. +         (match_dup 0)))
  14676. + ]
  14677. + "TARGET_80387"
  14678. + "*
  14679. + {
  14680. +  extern int flag_float_store;
  14681. +  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  14682. +    {
  14683. +      if (flag_float_store)
  14684. +        {
  14685. +          output_asm_insn (AS1 (fstpl,%0),operands);
  14686. +          output_asm_insn (AS1 (fldl,%1),operands);
  14687. +          return AS1(fdivl,%0);
  14688. +        }
  14689. +      output_asm_insn (AS1 (fstl,%0),operands);
  14690. +      return AS1(fdivrl,%1);
  14691. +    }
  14692. +  else
  14693. +    {
  14694. +      output_asm_insn (AS1 (fstl,%0),operands);
  14695. +      output_asm_insn (AS1 (fldl,%1),operands);
  14696. +      return AS1(fdivl,%0);
  14697. +    }
  14698. + }"
  14699. +);
  14700. +(define_peephole
  14701. + [(set (match_operand:SF 0 "memory_operand" "g")
  14702. +       (reg:SF 8))
  14703. +  (set (reg:SF 8)
  14704. +       (match_operand:SF 1 "memory_operand" "g"))
  14705. +  (set (reg:SF 8)
  14706. +    (mult:SF (reg:SF 8)
  14707. +         (match_dup 0)))
  14708. + ]
  14709. + "TARGET_80387"
  14710. + "*
  14711. + {
  14712. +  extern int flag_float_store;
  14713. +  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  14714. +    {
  14715. +      if (flag_float_store)
  14716. +        {
  14717. +          output_asm_insn (AS1 (fstps,%0),operands);
  14718. +          output_asm_insn (AS1 (flds,%1),operands);
  14719. +          return AS1(fmuls,%0);
  14720. +        }
  14721. +      output_asm_insn (AS1 (fsts,%0),operands);
  14722. +      return AS1(fmuls,%1);
  14723. +    }
  14724. +  else
  14725. +    {
  14726. +      output_asm_insn (AS1 (fsts,%0),operands);
  14727. +      output_asm_insn (AS1 (flds,%1),operands);
  14728. +      return AS1(fmuls,%0);
  14729. +    }
  14730. + }"
  14731. +);
  14732. +(define_peephole
  14733. + [(set (match_operand:SF 0 "memory_operand" "g")
  14734. +       (reg:SF 8))
  14735. +  (set (reg:SF 8)
  14736. +       (match_operand:SF 1 "memory_operand" "g"))
  14737. +  (set (reg:SF 8)
  14738. +    (plus:SF (reg:SF 8)
  14739. +         (match_dup 0)))
  14740. + ]
  14741. + "TARGET_80387"
  14742. + "*
  14743. + {
  14744. +  extern int flag_float_store;
  14745. +  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  14746. +    {
  14747. +      if (flag_float_store)
  14748. +        {
  14749. +          output_asm_insn (AS1 (fstps,%0),operands);
  14750. +          output_asm_insn (AS1 (flds,%1),operands);
  14751. +          return AS1(fadds,%0);
  14752. +        }
  14753. +      output_asm_insn (AS1 (fsts,%0),operands);
  14754. +      return AS1(fadds,%1);
  14755. +    }
  14756. +  else
  14757. +    {
  14758. +      output_asm_insn (AS1 (fsts,%0),operands);
  14759. +      output_asm_insn (AS1 (flds,%1),operands);
  14760. +      return AS1(fadds,%0);
  14761. +    }
  14762. + }"
  14763. +);
  14764. +(define_peephole
  14765. + [(set (match_operand:SF 0 "memory_operand" "g")
  14766. +       (reg:SF 8))
  14767. +  (set (reg:SF 8)
  14768. +       (match_operand:SF 1 "memory_operand" "g"))
  14769. +  (set (reg:SF 8)
  14770. +    (minus:SF (reg:SF 8)
  14771. +         (match_dup 0)))
  14772. + ]
  14773. + "TARGET_80387"
  14774. + "*
  14775. + {
  14776. +  extern int flag_float_store;
  14777. +  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  14778. +    {
  14779. +      if (flag_float_store)
  14780. +        {
  14781. +          output_asm_insn (AS1 (fstps,%0),operands);
  14782. +          output_asm_insn (AS1 (flds,%1),operands);
  14783. +          return AS1(fsubs,%0);
  14784. +        }
  14785. +      output_asm_insn (AS1 (fsts,%0),operands);
  14786. +      return AS1(fsubrs,%1);
  14787. +    }
  14788. +  else
  14789. +    {
  14790. +      output_asm_insn (AS1 (fsts,%0),operands);
  14791. +      output_asm_insn (AS1 (flds,%1),operands);
  14792. +      return AS1(fsubs,%0);
  14793. +    }
  14794. + }"
  14795. +);
  14796. +(define_peephole
  14797. + [(set (match_operand:SF 0 "memory_operand" "g")
  14798. +       (reg:SF 8))
  14799. +  (set (reg:SF 8)
  14800. +       (match_operand:SF 1 "memory_operand" "g"))
  14801. +  (set (reg:SF 8)
  14802. +    (div:SF (reg:SF 8)
  14803. +         (match_dup 0)))
  14804. + ]
  14805. + "TARGET_80387"
  14806. + "*
  14807. + {
  14808. +  extern int flag_float_store;
  14809. +  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  14810. +    {
  14811. +      if (flag_float_store)
  14812. +        {
  14813. +          output_asm_insn (AS1 (fstps,%0),operands);
  14814. +          output_asm_insn (AS1 (flds,%1),operands);
  14815. +          return AS1(fdivs,%0);
  14816. +        }
  14817. +      output_asm_insn (AS1 (fsts,%0),operands);
  14818. +      return AS1(fdivrs,%1);
  14819. +    }
  14820. +  else
  14821. +    {
  14822. +      output_asm_insn (AS1 (fsts,%0),operands);
  14823. +      output_asm_insn (AS1 (flds,%1),operands);
  14824. +      return AS1(fdivs,%0);
  14825. +    }
  14826. + }"
  14827. +);
  14828. +;; change fstp mem1
  14829. +;;        fld  mem1
  14830. +;; to
  14831. +;;        fst  mem1
  14832. +(define_peephole
  14833. + [(set (match_operand:DF 0 "memory_operand" "g")
  14834. +       (reg:DF 8))
  14835. +  (set (reg:DF 8)
  14836. +       (match_dup 0))]
  14837. + "TARGET_80387"
  14838. + "*
  14839. + {
  14840. +  extern int flag_float_store;
  14841. +  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  14842. +    {
  14843. +      if(!MEM_VOLATILE_P (operands[0]) && !flag_float_store)
  14844. +        {
  14845. +          return AS1 (fstl,%0);
  14846. +        }
  14847. +      else
  14848. +        {
  14849. +         output_asm_insn (AS1 (fstpl,%0),operands);
  14850. +         return AS1 (fldl,%0);
  14851. +        }
  14852. +    }
  14853. +  else
  14854. +    {
  14855. +      output_asm_insn (AS1 (fstl,%0),operands);
  14856. +      return AS1 (fldl,%0);
  14857. +    }
  14858. + }"
  14859. +);
  14860. +
  14861. +(define_peephole
  14862. + [(set (match_operand:SF 0 "memory_operand" "g")
  14863. +       (reg:SF 8))
  14864. +  (set (reg:SF 8)
  14865. +       (match_dup 0))]
  14866. + "TARGET_80387"
  14867. + "*
  14868. + {
  14869. +  extern int flag_float_store;
  14870. +  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
  14871. +    {
  14872. +      if(!MEM_VOLATILE_P (operands[0]) && !flag_float_store)
  14873. +        {
  14874. +          return AS1 (fsts,%0);
  14875. +        }
  14876. +      else
  14877. +        {
  14878. +         output_asm_insn (AS1 (fstps,%0),operands);
  14879. +         return AS1 (flds,%0);
  14880. +        }
  14881. +    }
  14882. +  else
  14883. +    {
  14884. +      output_asm_insn (AS1 (fsts,%0),operands);
  14885. +      return AS1 (flds,%0);
  14886. +    }
  14887. + }"
  14888. +);
  14889. +
  14890. +(define_peephole
  14891. + [(set (match_operand:SF 0 "memory_operand" "g")
  14892. +       (reg:SF 8))
  14893. +  (set (reg:DF 8)
  14894. +       (float_extend:DF (match_dup 0)))]
  14895. + "TARGET_80387"
  14896. + "*
  14897. + {
  14898. +  extern int flag_float_store;
  14899. +  if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG) && !flag_float_store)
  14900. +    {
  14901. +      return AS1 (fsts,%0);
  14902. +    }
  14903. +  else
  14904. +    {
  14905. +      output_asm_insn (AS1 (fsts,%0),operands);
  14906. +      return AS1 (flds,%0);
  14907. +    }
  14908. + }"
  14909. +);
  14910. +
  14911. +;; see if compare can be deleted
  14912. +(define_peephole
  14913. +  [
  14914. +   (set (cc0)
  14915. +    (compare (const_int 0)
  14916. +         (match_operand:SI 0 "general_operand" "g")))
  14917. +   (set (pc)
  14918. +    (if_then_else (ne (cc0)
  14919. +              (const_int 0))
  14920. +              (label_ref (match_operand 1 "" ""))
  14921. +              (pc)))
  14922. +  ]
  14923. +  ""
  14924. +  "*
  14925. +{
  14926. +      if(!last_to_set_cc(operands[0]),insn)
  14927. +      {
  14928. +        operands[2] = const0_rtx;
  14929. +        output_asm_insn (AS2 (cmp%L0,%2,%0),operands);
  14930. +        return \"jne %l1\";
  14931. +      }
  14932. +      else
  14933. +      {
  14934. +        return \"jne %l1\";
  14935. +      }
  14936. +}");
  14937. +  
  14938. +(define_peephole
  14939. +  [
  14940. +   (set (cc0)
  14941. +    (compare (match_operand:SI 0 "general_operand" "g")
  14942. +         (const_int 0)))
  14943. +   (set (pc)
  14944. +    (if_then_else (ne (cc0)
  14945. +              (const_int 0))
  14946. +              (label_ref (match_operand 1 "" ""))
  14947. +              (pc)))
  14948. +  ]
  14949. +  ""
  14950. +  "*
  14951. +{
  14952. +      if(!last_to_set_cc(operands[0],insn))
  14953. +      {
  14954. +        operands[2] = const0_rtx;
  14955. +        output_asm_insn (AS2 (cmp%L0,%2,%0),operands);
  14956. +        return \"jne %l1\";
  14957. +      }
  14958. +      else
  14959. +      {
  14960. +        return \"jne %l1\";
  14961. +      }
  14962. +}");
  14963. +
  14964. +;; optimization of sign_extend combined with and
  14965. +(define_peephole
  14966. +  [
  14967. +   (set (match_operand:HI 0 "register_operand" "")
  14968. +    (and:HI (match_dup 0)
  14969. +        (match_operand:HI 1 "immediate_operand" "")))
  14970. +   (set (match_operand:SI 2 "register_operand" "")
  14971. +    (sign_extend:SI
  14972. +     (match_dup 0)))
  14973. +  ]
  14974. +  ""
  14975. +  "*
  14976. +{
  14977. +      int no_sign_extend = 0;
  14978. +      rtx note;
  14979. +      if ((INTVAL (operands[1]) & 0x8000) == 0)
  14980. +        { /* Don't need to do sign extend */
  14981. +          no_sign_extend = 1;
  14982. +        }
  14983. +      CC_STATUS_INIT;
  14984. +      if (no_sign_extend)
  14985. +        {
  14986. +      if (REGNO (operands[0]) == REGNO (operands[2]))
  14987. +        {
  14988. +              operands [0] = gen_rtx (REG, SImode, REGNO (operands[0]));
  14989. +          output_asm_insn (AS2 (and%L0,%1,%0), operands);
  14990. +        }
  14991. +      else
  14992. +        {
  14993. +          output_asm_insn (AS2 (and%W0,%1,%w0), operands);
  14994. +              operands [0] = gen_rtx (REG, SImode, REGNO (operands[0]));
  14995. +          output_asm_insn (AS2 (mov%L0,%0,%2), operands);
  14996. +          operands [1] = gen_rtx (CONST_INT, 0, 0xffff);
  14997. +          output_asm_insn (AS2 (and%L0,%1,%2), operands);
  14998. +        }
  14999. +      RET;
  15000. +        }
  15001. +      /* Can we ignore the upper byte? */
  15002. +      else if (QI_REG_P (operands[0])
  15003. +      && (INTVAL (operands[1]) & 0xff00) == 0xff00)
  15004. +    {
  15005. +      if ((INTVAL (operands[1]) & 0xff) == 0)
  15006. +        {
  15007. +          operands[1] = const0_rtx;
  15008. +          output_asm_insn (AS2 (mov%B0,%1,%b0), operands);
  15009. +        }
  15010. +      else
  15011. +        {
  15012. +          operands[1] = GEN_INT (INTVAL (operands[1]) & 0xff);
  15013. +          output_asm_insn (AS2 (and%B0,%1,%b0), operands);
  15014. +        }
  15015. +    }
  15016. +      else if (!no_sign_extend && QI_REG_P (operands[0]) 
  15017. +               && (INTVAL (operands[1]) & 0xff) == 0xff)
  15018. +    {
  15019. +      if ((INTVAL (operands[1]) & 0xff00) == 0)
  15020. +        {
  15021. +          operands[1] = const0_rtx;
  15022. +          output_asm_insn (AS2 (mov%B0,%1,%h0), operands);
  15023. +        }
  15024. +
  15025. +      operands[1] = GEN_INT ((INTVAL (operands[1]) >> 8) & 0xff);
  15026. +      output_asm_insn (AS2 (and%B0,%1,%b0), operands);
  15027. +    }
  15028. +  if (REGNO (operands[2]) == 0 && REGNO (operands[0]) == 0)
  15029. +#ifdef INTEL_SYNTAX
  15030. +    return \"cwde\";
  15031. +#else
  15032. +    return \"cwtl\";
  15033. +#endif
  15034. +
  15035. +#ifdef INTEL_SYNTAX
  15036. +  return AS2 (movsx,%0,%2);
  15037. +#else
  15038. +  return AS2 (movs%W0%L0,%0,%2);
  15039. +#endif
  15040. +}");
  15041. +
  15042. +(define_peephole
  15043. +  [
  15044. +   (set (match_operand:HI 0 "register_operand" "")
  15045. +    (match_operand:HI 1 "memory_operand" ""))
  15046. +   (set (match_dup 0)
  15047. +    (and:HI (match_dup 0)
  15048. +        (match_operand:HI 2 "immediate_operand" "")))
  15049. +   (set (match_operand:SI 3 "register_operand" "")
  15050. +    (sign_extend:SI
  15051. +     (match_dup 0)))
  15052. +  ]
  15053. +  ""
  15054. +  "*
  15055. +{
  15056. +      int no_sign_extend = 0;
  15057. +      if ((INTVAL (operands[2]) & 0xff00) == 0
  15058. +          && QI_REG_P (operands[0]))
  15059. +        {
  15060. +          output_asm_insn (AS2 (mov%B0,%b1,%b0), operands);
  15061. +        }
  15062. +      else
  15063. +        {
  15064. +          output_asm_insn (AS2 (mov%W0,%1,%0), operands);
  15065. +        }
  15066. +      if ((INTVAL (operands[2]) & 0x8000) == 0)
  15067. +        { /* Don't need to do sign extend */
  15068. +          no_sign_extend = 1;
  15069. +        }
  15070. +      CC_STATUS_INIT;
  15071. +      if (no_sign_extend)
  15072. +        {
  15073. +      if (REGNO (operands[0]) == REGNO (operands[3]))
  15074. +        {
  15075. +              operands [0] = gen_rtx (REG, SImode, REGNO (operands[0]));
  15076. +          output_asm_insn (AS2 (and%L0,%2,%0), operands);
  15077. +        }
  15078. +      else
  15079. +        {
  15080. +          output_asm_insn (AS2 (and%W0,%2,%w0), operands);
  15081. +              operands [0] = gen_rtx (REG, SImode, REGNO (operands[0]));
  15082. +          output_asm_insn (AS2 (mov%L0,%0,%3), operands);
  15083. +          operands [2] = gen_rtx (CONST_INT, 0, 0xffff);
  15084. +          output_asm_insn (AS2 (and%L0,%2,%3), operands);
  15085. +        }
  15086. +      RET;
  15087. +        }
  15088. +      /* Can we ignore the upper byte? */
  15089. +      else if (QI_REG_P (operands[0])
  15090. +      && (INTVAL (operands[2]) & 0xff00) == 0xff00)
  15091. +    {
  15092. +      if ((INTVAL (operands[2]) & 0xff) == 0)
  15093. +        {
  15094. +          operands[2] = const0_rtx;
  15095. +          output_asm_insn (AS2 (mov%B0,%2,%b0), operands);
  15096. +        }
  15097. +      else
  15098. +        {
  15099. +          operands[2] = GEN_INT (INTVAL (operands[2]) & 0xff);
  15100. +          output_asm_insn (AS2 (and%B0,%2,%b0), operands);
  15101. +        }
  15102. +    }
  15103. +      else if (!no_sign_extend && QI_REG_P (operands[0]) 
  15104. +               && (INTVAL (operands[2]) & 0xff) == 0xff)
  15105. +    {
  15106. +      if ((INTVAL (operands[2]) & 0xff00) == 0)
  15107. +        {
  15108. +          operands[2] = const0_rtx;
  15109. +          output_asm_insn (AS2 (mov%B0,%2,%h0), operands);
  15110. +        }
  15111. +
  15112. +      operands[1] = GEN_INT ((INTVAL (operands[2]) >> 8) & 0xff);
  15113. +      output_asm_insn (AS2 (and%B0,%2,%b0), operands);
  15114. +    }
  15115. +      else
  15116. +        {
  15117. +          output_asm_insn (AS2 (and%W0,%2,%0), operands);
  15118. +        }
  15119. +  if (REGNO (operands[3]) == 0 && REGNO (operands[0]) == 0)
  15120. +#ifdef INTEL_SYNTAX
  15121. +    return \"cwde\";
  15122. +#else
  15123. +    return \"cwtl\";
  15124. +#endif
  15125. +
  15126. +#ifdef INTEL_SYNTAX
  15127. +  return AS2 (movsx,%0,%3);
  15128. +#else
  15129. +  return AS2 (movs%W0%L0,%0,%3);
  15130. +#endif
  15131. +}");
  15132. +
  15133. +(define_peephole
  15134. +  [
  15135. +   (set (match_operand:HI 0 "register_operand" "")
  15136. +    (sign_extend:HI
  15137. +     (match_operand:QI 1 "memory_operand" "")))
  15138. +   (set (match_dup 0)
  15139. +    (and:HI (match_dup 0)
  15140. +        (match_operand:HI 2 "immediate_operand" "")))
  15141. +   (set (match_operand:SI 3 "register_operand" "")
  15142. +    (sign_extend:SI
  15143. +     (match_dup 0)))
  15144. +  ]
  15145. +  ""
  15146. +  "*
  15147. +{
  15148. +      int no_sign_extend = 0;
  15149. +      if ((INTVAL (operands[2]) & 0xff00) == 0
  15150. +          && QI_REG_P (operands[0]))
  15151. +        {
  15152. +          output_asm_insn (AS2 (mov%B0,%b1,%b0), operands);
  15153. +        }
  15154. +      else
  15155. +        {
  15156. +#ifdef INTEL_SYNTAX
  15157. +          output_asm_insn( AS2 (movsx,%1,%0), operands);
  15158. +#else
  15159. +          output_asm_insn( AS2 (movs%B0%W0,%1,%0), operands);
  15160. +#endif
  15161. +        }
  15162. +      if ((INTVAL (operands[2]) & 0x8000) == 0)
  15163. +        { /* Don't need to do sign extend */
  15164. +          no_sign_extend = 1;
  15165. +        }
  15166. +      CC_STATUS_INIT;
  15167. +      if (no_sign_extend)
  15168. +        {
  15169. +      if (REGNO (operands[0]) == REGNO (operands[3]))
  15170. +        {
  15171. +              operands [0] = gen_rtx (REG, SImode, REGNO (operands[0]));
  15172. +          output_asm_insn (AS2 (and%L0,%2,%0), operands);
  15173. +        }
  15174. +      else
  15175. +        {
  15176. +          output_asm_insn (AS2 (and%W0,%2,%w0), operands);
  15177. +              operands [0] = gen_rtx (REG, SImode, REGNO (operands[0]));
  15178. +          output_asm_insn (AS2 (mov%L0,%0,%3), operands);
  15179. +          operands [2] = gen_rtx (CONST_INT, 0, 0xffff);
  15180. +          output_asm_insn (AS2 (and%L0,%2,%3), operands);
  15181. +        }
  15182. +      RET;
  15183. +        }
  15184. +      /* Can we ignore the upper byte? */
  15185. +      else if (QI_REG_P (operands[0])
  15186. +      && (INTVAL (operands[2]) & 0xff00) == 0xff00)
  15187. +    {
  15188. +      if ((INTVAL (operands[2]) & 0xff) == 0)
  15189. +        {
  15190. +          operands[2] = const0_rtx;
  15191. +          output_asm_insn (AS2 (mov%B0,%2,%b0), operands);
  15192. +        }
  15193. +      else
  15194. +        {
  15195. +          operands[2] = GEN_INT (INTVAL (operands[2]) & 0xff);
  15196. +          output_asm_insn (AS2 (and%B0,%2,%b0), operands);
  15197. +        }
  15198. +    }
  15199. +      else if (!no_sign_extend && QI_REG_P (operands[0]) 
  15200. +               && (INTVAL (operands[2]) & 0xff) == 0xff)
  15201. +    {
  15202. +      if ((INTVAL (operands[2]) & 0xff00) == 0)
  15203. +        {
  15204. +          operands[2] = const0_rtx;
  15205. +          output_asm_insn (AS2 (mov%B0,%2,%h0), operands);
  15206. +        }
  15207. +
  15208. +      operands[1] = GEN_INT ((INTVAL (operands[2]) >> 8) & 0xff);
  15209. +      output_asm_insn (AS2 (and%B0,%2,%b0), operands);
  15210. +    }
  15211. +      else
  15212. +        {
  15213. +          output_asm_insn (AS2 (and%W0,%2,%0), operands);
  15214. +        }
  15215. +  if (REGNO (operands[3]) == 0 && REGNO (operands[0]) == 0)
  15216. +#ifdef INTEL_SYNTAX
  15217. +    return \"cwde\";
  15218. +#else
  15219. +    return \"cwtl\";
  15220. +#endif
  15221. +
  15222. +#ifdef INTEL_SYNTAX
  15223. +  return AS2 (movsx,%0,%3);
  15224. +#else
  15225. +  return AS2 (movs%W0%L0,%0,%3);
  15226. +#endif
  15227. +}");
  15228. +
  15229. +(define_peephole
  15230. +  [
  15231. +   (set (match_operand:HI 0 "register_operand" "")
  15232. +    (sign_extend:HI
  15233. +     (match_operand:QI 1 "memory_operand" "")))
  15234. +   (set (match_dup 0)
  15235. +    (and:HI (match_dup 0)
  15236. +        (match_operand:HI 2 "immediate_operand" "")))
  15237. +  ]
  15238. +  ""
  15239. +  "*
  15240. +{
  15241. +      if ((INTVAL (operands[2]) & 0xff00) == 0
  15242. +          && QI_REG_P (operands[0]))
  15243. +        {
  15244. +          output_asm_insn (AS2 (mov%B0,%b1,%b0), operands);
  15245. +        }
  15246. +      else
  15247. +        {
  15248. +#ifdef INTEL_SYNTAX
  15249. +          output_asm_insn( AS2 (movsx,%1,%0), operands);
  15250. +#else
  15251. +          output_asm_insn( AS2 (movs%B0%W0,%1,%0), operands);
  15252. +#endif
  15253. +        }
  15254. +      /* Can we ignore the upper byte? */
  15255. +      if (QI_REG_P (operands[0])
  15256. +      && (INTVAL (operands[2]) & 0xff00) == 0xff00)
  15257. +    {
  15258. +      if ((INTVAL (operands[2]) & 0xff) == 0)
  15259. +        {
  15260. +          operands[2] = const0_rtx;
  15261. +          output_asm_insn (AS2 (mov%B0,%2,%b0), operands);
  15262. +        }
  15263. +      else
  15264. +        {
  15265. +          operands[2] = GEN_INT (INTVAL (operands[2]) & 0xff);
  15266. +          output_asm_insn (AS2 (and%B0,%2,%b0), operands);
  15267. +        }
  15268. +    }
  15269. +      else if (QI_REG_P (operands[0]) 
  15270. +               && (INTVAL (operands[2]) & 0xff) == 0xff)
  15271. +    {
  15272. +      if ((INTVAL (operands[2]) & 0xff00) == 0)
  15273. +        {
  15274. +          operands[2] = const0_rtx;
  15275. +          output_asm_insn (AS2 (mov%B0,%2,%h0), operands);
  15276. +        }
  15277. +
  15278. +      operands[1] = GEN_INT ((INTVAL (operands[2]) >> 8) & 0xff);
  15279. +      output_asm_insn (AS2 (and%B0,%2,%b0), operands);
  15280. +    }
  15281. +      else
  15282. +        {
  15283. +          output_asm_insn (AS2 (and%W0,%2,%0), operands);
  15284. +        }
  15285. +   RET;
  15286. +}");
  15287. +
  15288. +(define_peephole
  15289. +  [
  15290. +   (set (match_operand:SI 0 "register_operand" "")
  15291. +    (sign_extend:SI
  15292. +     (match_operand:QI 1 "memory_operand" "")))
  15293. +   (set (match_dup 0)
  15294. +    (and:SI (match_dup 0)
  15295. +        (match_operand:SI 2 "immediate_operand" "")))
  15296. +  ]
  15297. +  ""
  15298. +  "*
  15299. +{
  15300. +      if ((INTVAL (operands[2]) & 0xffffff00) == 0
  15301. +          && QI_REG_P (operands[0]))
  15302. +        {
  15303. +          output_asm_insn (AS2 (mov%B0,%b1,%b0), operands);
  15304. +        }
  15305. +      else
  15306. +        {
  15307. +#ifdef INTEL_SYNTAX
  15308. +          output_asm_insn( AS2 (movsx,%1,%0), operands);
  15309. +#else
  15310. +          output_asm_insn( AS2 (movs%B0%L0,%1,%0), operands);
  15311. +#endif
  15312. +        }
  15313. +      output_asm_insn (AS2 (and%L0,%2,%0), operands);
  15314. +   RET;
  15315. +}");
  15316. +
  15317. +(define_peephole
  15318. +  [
  15319. +   (set (match_operand:SI 0 "register_operand" "")
  15320. +    (sign_extend:SI
  15321. +     (match_operand:HI 1 "memory_operand" "")))
  15322. +   (set (match_dup 0)
  15323. +    (and:SI (match_dup 0)
  15324. +        (match_operand:SI 2 "immediate_operand" "")))
  15325. +  ]
  15326. +  ""
  15327. +  "*
  15328. +{
  15329. +      if ((INTVAL (operands[2]) & 0xffffff00) == 0
  15330. +          && QI_REG_P (operands[0]))
  15331. +        {
  15332. +          output_asm_insn (AS2 (mov%B0,%b1,%b0), operands);
  15333. +        }
  15334. +      else if ((INTVAL (operands[2]) & 0xffff0000) == 0)
  15335. +        {
  15336. +          output_asm_insn (AS2 (mov%W0,%h1,%h0), operands);
  15337. +        }
  15338. +      else
  15339. +        {
  15340. +#ifdef INTEL_SYNTAX
  15341. +          output_asm_insn( AS2 (movsx,%1,%0), operands);
  15342. +#else
  15343. +          output_asm_insn( AS2 (movs%B0%W0,%1,%0), operands);
  15344. +#endif
  15345. +        }
  15346. +      output_asm_insn (AS2 (and%L0,%2,%0), operands);
  15347. +   RET;
  15348. +}");
  15349. diff -r -u -H -N gcc-2.6.3/config/i386/osfrose.h gcc-i2.6.3/config/i386/osfrose.h
  15350. --- gcc-2.6.3/config/i386/osfrose.h    Wed Oct 26 17:14:11 1994
  15351. +++ gcc-i2.6.3/config/i386/osfrose.h    Wed Feb 15 22:46:52 1995
  15352. @@ -468,6 +468,10 @@
  15353.     defined, is executed once just after all the command options have
  15354.     been parsed.  */
  15355.  
  15356. +#ifdef OVERRIDE_OPTIONS
  15357. +#undef OVERRIDE_OPTIONS
  15358. +#endif
  15359. +
  15360.  #undef  SUBTARGET_OVERRIDE_OPTIONS
  15361.  #define SUBTARGET_OVERRIDE_OPTIONS                    \
  15362.  {                                    \
  15363. diff -r -u -H -N gcc-2.6.3/config.sub gcc-i2.6.3/config.sub
  15364. --- gcc-2.6.3/config.sub    Wed Oct 26 14:23:05 1994
  15365. +++ gcc-i2.6.3/config.sub    Wed Feb 15 23:11:03 1995
  15366. @@ -120,7 +120,7 @@
  15367.      # Recognize the basic CPU types without company name.
  15368.      # Some are omitted here because they have special meanings below.
  15369.      tahoe | i[345]86 | i860 | m68k | m68000 | m88k | ns32k | arm | pyramid \
  15370. -        | tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 \
  15371. +        | pentium | tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 \
  15372.          | alpha | we32k | ns16k | clipper | sparclite | i370 | sh \
  15373.          | powerpc | sparc64 | 1750a | dsp16xx | mips64 | mipsel \
  15374.          | pdp11 | mips64el | mips64orion | mips64orionel )
  15375. @@ -133,7 +133,7 @@
  15376.          ;;
  15377.      # Recognize the basic CPU types with company name.
  15378.      vax-* | tahoe-* | i[345]86-* | i860-* | m68k-* | m68000-* | m88k-* \
  15379. -          | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \
  15380. +          | pentium-* | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \
  15381.            | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
  15382.            | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \
  15383.            | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \
  15384. @@ -300,18 +300,34 @@
  15385.          basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'`
  15386.          os=-sysv32
  15387.          ;;
  15388. +    pentiumv32)
  15389. +        basic_machine=`echo $1 | sed -e 's/pentium.*/pentium-unknown/'`
  15390. +        os=-sysv32
  15391. +        ;;
  15392.      i[345]86v4*)
  15393.          basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'`
  15394.          os=-sysv4
  15395.          ;;
  15396. +  pentiumv4*)
  15397. +      basic_machine=`echo $1 | sed -e 's/pentium.*/pentium-unknown/'`
  15398. +      os=-sysv4
  15399. +      ;;
  15400.      i[345]86v)
  15401.          basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'`
  15402.          os=-sysv
  15403.          ;;
  15404. +  pentiumv)
  15405. +      basic_machine=`echo $1 | sed -e 's/pentium.*/pentium-unknown/'`
  15406. +      os=-sysv
  15407. +      ;;
  15408.      i[345]86sol2)
  15409.          basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'`
  15410.          os=-solaris2
  15411.          ;;
  15412. +  pentiumsol2)
  15413. +      basic_machine=`echo $1 | sed -e 's/pentium.*/pentium-unknown/'`
  15414. +      os=-solaris2
  15415. +      ;;
  15416.      iris | iris4d)
  15417.          basic_machine=mips-sgi
  15418.          case $os in
  15419. diff -r -u -H -N gcc-2.6.3/configure gcc-i2.6.3/configure
  15420. --- gcc-2.6.3/configure    Wed Nov 23 17:26:27 1994
  15421. +++ gcc-i2.6.3/configure    Wed Feb 15 23:56:29 1995
  15422. @@ -664,7 +664,7 @@
  15423.          xm_file=i370/xm-mvs.h
  15424.          out_file=i370/mvs370.c
  15425.          ;;
  15426. -    i[345]86-ibm-aix*)        # IBM PS/2 running AIX
  15427. +    pentium-ibm-aix* | i[345]86-ibm-aix*)        # IBM PS/2 running AIX
  15428.          cpu_type=i386
  15429.                  if [ x$gas = xyes ]
  15430.          then
  15431. @@ -685,7 +685,7 @@
  15432.          tm_file=i386/sysv4.h
  15433.          tmake_file=t-svr4
  15434.          ;;
  15435. -    i[345]86-next-*)
  15436. +    pentium-next-* | i[345]86-next-*)
  15437.          cpu_type=i386
  15438.          tm_file=i386/next.h
  15439.          out_file=i386/next.c
  15440. @@ -693,7 +693,7 @@
  15441.          tmake_file=i386/t-next
  15442.          xmake_file=i386/x-next
  15443.          ;;
  15444. -    i[345]86-sequent-bsd*)         # 80386 from Sequent
  15445. +    pentium-sequent-bsd* | i[345]86-sequent-bsd*)         # 80386 from Sequent
  15446.          cpu_type=i386
  15447.          use_collect2=yes
  15448.          if [ x$gas = xyes ]
  15449. @@ -703,7 +703,7 @@
  15450.              tm_file=i386/sequent.h
  15451.          fi
  15452.          ;;
  15453. -    i[345]86-sequent-ptx1*)
  15454. +    pentium-sequent-ptx1* | i[345]86-sequent-ptx1*)
  15455.          cpu_type=i386
  15456.          xm_file=i386/xm-sysv3.h
  15457.          xmake_file=i386/x-sysv3
  15458. @@ -730,7 +730,7 @@
  15459.          tm_file=i386/sun.h
  15460.          use_collect2=yes
  15461.          ;;
  15462. -    i[345]86-*-bsdi* | i[345]86-*-bsd386*)
  15463. +    pentium-*-bsd* | i[345]86-*-bsdi* | i[345]86-*-bsd386*)
  15464.          cpu_type=i386
  15465.          tm_file=i386/bsd386.h
  15466.  #        tmake_file=t-libc-ok
  15467. @@ -742,21 +742,21 @@
  15468.  # Next line turned off because both 386BSD and BSD/386 use GNU ld.
  15469.  #        use_collect2=yes
  15470.          ;;
  15471. -    i[345]86-*-freebsd*)
  15472. +    pentium-*-freebsd* | i[345]86-*-freebsd*)
  15473.          cpu_type=i386
  15474.          tm_file=i386/freebsd.h
  15475.          # On FreeBSD, the headers are already ok.
  15476.          fixincludes=Makefile.in
  15477.          xmake_file=i386/x-freebsd
  15478.          ;;
  15479. -    i[345]86-*-netbsd*)
  15480. +    pentium-*-netbsd* | i[345]86-*-netbsd*)
  15481.          cpu_type=i386
  15482.          tm_file=i386/netbsd-i386.h
  15483.          # On NetBSD, the headers are already okay.
  15484.          fixincludes=Makefile.in
  15485.          xmake_file=x-netbsd
  15486.          ;;
  15487. -    i[345]86-*-gnu*)
  15488. +    pentium-*-gnu* | i[345]86-*-gnu*)
  15489.          cpu_type=i386
  15490.          xm_file=i386/xm-gnu.h
  15491.          tm_file=i386/gnu.h
  15492. @@ -790,7 +790,7 @@
  15493.          install_headers_dir=install-headers-cpio
  15494.          broken_install=yes
  15495.          ;;
  15496. -    i[345]86-*-linux*)        # Intel 80386's running Linux
  15497. +    pentium-*-linux* | i[345]86-*-linux*)        # Intel 80386's running Linux
  15498.          cpu_type=i386
  15499.          xm_file=i386/xm-linux.h
  15500.          xmake_file=i386/x-linux
  15501. @@ -803,7 +803,7 @@
  15502.          fixincludes=Makefile.in #On Linux, the headers are ok already.
  15503.          broken_install=yes
  15504.          ;;
  15505. -    i[345]86-*-lynxos*)
  15506. +    pentium-*-lynxos* | i[345]86-*-lynxos*)
  15507.          cpu_type=i386
  15508.          if [ x$gas = xyes ]
  15509.          then
  15510. @@ -814,13 +814,13 @@
  15511.          xm_file=xm-lynx.h
  15512.          xmake_file=x-lynx
  15513.          ;;
  15514. -    i[345]86-*-mach*)
  15515. +    pentium-*-mach* | i[345]86-*-mach*)
  15516.          cpu_type=i386
  15517.          tm_file=i386/mach.h
  15518.  #        tmake_file=t-libc-ok
  15519.          use_collect2=yes
  15520.          ;;
  15521. -    i[345]86-*-osfrose*)        # 386 using OSF/rose
  15522. +    pentium-*-osfrose* | i[345]86-*-osfrose*)        # 386 using OSF/rose
  15523.          cpu_type=i386
  15524.                  if [ x$elf = xyes ]
  15525.          then
  15526. @@ -876,7 +876,7 @@
  15527.          fixincludes=fixinc.svr4
  15528.          broken_install=yes
  15529.          ;;
  15530. -    i[345]86-*-sysv4*)        # Intel 80386's running system V.4
  15531. +    pentium-*-sysv4* | i[345]86-*-sysv4*)    # Intel 80386's running system V.4
  15532.          cpu_type=i386
  15533.          xm_file=i386/xm-sysv4.h
  15534.          if [ x$stabs = xyes ]
  15535. @@ -888,7 +888,7 @@
  15536.          tmake_file=t-svr4
  15537.          xmake_file=x-svr4
  15538.          ;;
  15539. -    i[345]86-*-sysv*)        # Intel 80386's running system V
  15540. +    pentium-*-sysv* | i[345]86-*-sysv*)        # Intel 80386's running system V
  15541.          cpu_type=i386
  15542.          xm_file=i386/xm-sysv3.h
  15543.          xmake_file=i386/x-sysv3
  15544. @@ -907,7 +907,7 @@
  15545.              extra_parts="crtbegin.o crtend.o"
  15546.          fi
  15547.          ;;
  15548. -    i[345]86-*-winnt3*)
  15549. +    pentium-*-winnt3* | i[345]86-*-winnt3*)
  15550.          cpu_type=i386
  15551.          tm_file=i386/winnt.h
  15552.          out_file=i386/i386.c
  15553. @@ -1896,10 +1896,16 @@
  15554.      esac
  15555.  
  15556.      # Distinguish i386 from i486/i586.
  15557. -    # ??? For the moment we treat i586 as an i486.
  15558. +    # ??? For the moment we treat i586 as an i486. (NOT!)
  15559.      # Also, do not run mips-tfile on MIPS if using gas.
  15560.      case $machine in
  15561. -    i[45]86-*-*)
  15562. +    pentium-*-*)
  15563. +        target_cpu_default=4
  15564. +        ;;
  15565. +    i586-*-*)
  15566. +        target_cpu_default=4
  15567. +        ;;
  15568. +    i486-*-*)
  15569.          target_cpu_default=2
  15570.          ;;
  15571.      mips-*-*)
  15572. diff -r -u -H -N gcc-2.6.3/cp/parse.c gcc-i2.6.3/cp/parse.c
  15573. --- gcc-2.6.3/cp/parse.c    Fri Oct 14 14:51:23 1994
  15574. +++ gcc-i2.6.3/cp/parse.c    Tue Dec 20 16:53:24 1994
  15575. @@ -190,7 +190,7 @@
  15576.  
  15577.  
  15578.  
  15579. -#define    YYFINAL        1356
  15580. +#define    YYFINAL        1350
  15581.  #define    YYFLAG        -32768
  15582.  #define    YYNTBASE    106
  15583.  
  15584. @@ -257,59 +257,59 @@
  15585.     630,   635,   640,   642,   646,   650,   654,   658,   662,   666,
  15586.     670,   674,   678,   682,   686,   690,   694,   698,   702,   706,
  15587.     710,   714,   718,   724,   728,   732,   734,   737,   741,   743,
  15588. -   745,   747,   749,   751,   753,   755,   758,   761,   765,   767,
  15589. -   769,   771,   775,   777,   779,   781,   783,   787,   791,   792,
  15590. -   797,   798,   805,   808,   813,   816,   819,   821,   826,   828,
  15591. -   836,   844,   852,   860,   865,   870,   873,   876,   878,   883,
  15592. -   886,   889,   892,   898,   902,   908,   912,   917,   924,   926,
  15593. -   929,   931,   934,   936,   938,   940,   943,   944,   947,   950,
  15594. -   954,   958,   962,   966,   970,   973,   976,   978,   980,   982,
  15595. -   985,   988,   991,   994,   996,   998,  1000,  1002,  1005,  1008,
  15596. -  1012,  1016,  1021,  1023,  1026,  1029,  1031,  1033,  1036,  1039,
  15597. -  1041,  1044,  1047,  1051,  1053,  1056,  1058,  1060,  1062,  1067,
  15598. -  1072,  1077,  1082,  1084,  1086,  1088,  1090,  1094,  1096,  1100,
  15599. -  1102,  1106,  1107,  1112,  1113,  1121,  1126,  1127,  1135,  1140,
  15600. -  1141,  1149,  1154,  1155,  1163,  1168,  1169,  1171,  1173,  1176,
  15601. -  1183,  1185,  1189,  1190,  1192,  1197,  1204,  1209,  1211,  1213,
  15602. -  1215,  1217,  1219,  1223,  1225,  1228,  1232,  1237,  1239,  1241,
  15603. -  1245,  1250,  1257,  1261,  1267,  1268,  1276,  1281,  1282,  1289,
  15604. -  1293,  1296,  1299,  1304,  1306,  1307,  1309,  1310,  1312,  1314,
  15605. -  1317,  1320,  1323,  1326,  1330,  1333,  1336,  1339,  1343,  1347,
  15606. -  1349,  1352,  1353,  1354,  1358,  1362,  1365,  1367,  1369,  1370,
  15607. -  1372,  1375,  1377,  1381,  1383,  1386,  1388,  1393,  1398,  1400,
  15608. -  1402,  1405,  1408,  1410,  1411,  1413,  1418,  1422,  1424,  1427,
  15609. -  1430,  1433,  1436,  1439,  1442,  1445,  1448,  1453,  1456,  1458,
  15610. -  1464,  1468,  1469,  1471,  1475,  1476,  1478,  1482,  1484,  1486,
  15611. -  1488,  1490,  1495,  1502,  1507,  1512,  1519,  1524,  1528,  1533,
  15612. -  1540,  1545,  1550,  1557,  1562,  1566,  1568,  1572,  1574,  1578,
  15613. -  1581,  1583,  1590,  1591,  1594,  1596,  1599,  1600,  1603,  1607,
  15614. -  1611,  1614,  1617,  1621,  1623,  1625,  1627,  1630,  1636,  1642,
  15615. -  1646,  1652,  1657,  1661,  1665,  1668,  1670,  1674,  1678,  1681,
  15616. -  1684,  1688,  1690,  1694,  1698,  1701,  1704,  1708,  1710,  1716,
  15617. -  1722,  1726,  1732,  1736,  1741,  1745,  1748,  1751,  1753,  1756,
  15618. -  1761,  1766,  1769,  1771,  1773,  1775,  1778,  1781,  1784,  1786,
  15619. -  1789,  1791,  1794,  1797,  1801,  1803,  1807,  1810,  1814,  1817,
  15620. -  1820,  1824,  1826,  1830,  1835,  1839,  1842,  1845,  1847,  1851,
  15621. -  1854,  1857,  1859,  1862,  1866,  1868,  1872,  1874,  1880,  1884,
  15622. -  1889,  1893,  1898,  1901,  1904,  1908,  1911,  1913,  1915,  1918,
  15623. -  1921,  1924,  1925,  1926,  1928,  1930,  1933,  1937,  1939,  1942,
  15624. -  1946,  1952,  1959,  1965,  1966,  1967,  1974,  1976,  1979,  1981,
  15625. -  1983,  1985,  1988,  1989,  1994,  1996,  1997,  1998,  2005,  2006,
  15626. -  2007,  2015,  2016,  2017,  2018,  2029,  2030,  2031,  2032,  2043,
  15627. -  2044,  2052,  2053,  2059,  2060,  2068,  2069,  2074,  2077,  2080,
  15628. -  2083,  2087,  2094,  2103,  2114,  2127,  2132,  2136,  2139,  2142,
  15629. -  2144,  2146,  2147,  2148,  2156,  2158,  2161,  2164,  2165,  2166,
  15630. -  2172,  2174,  2176,  2180,  2184,  2187,  2190,  2193,  2197,  2202,
  15631. -  2207,  2211,  2216,  2223,  2230,  2231,  2233,  2234,  2236,  2238,
  15632. -  2239,  2241,  2243,  2247,  2252,  2254,  2258,  2259,  2261,  2263,
  15633. -  2265,  2268,  2271,  2274,  2276,  2278,  2281,  2284,  2287,  2290,
  15634. -  2292,  2296,  2299,  2302,  2307,  2310,  2313,  2316,  2319,  2322,
  15635. -  2325,  2327,  2330,  2332,  2336,  2338,  2340,  2341,  2342,  2344,
  15636. -  2345,  2350,  2352,  2354,  2358,  2359,  2363,  2367,  2371,  2373,
  15637. -  2376,  2379,  2382,  2385,  2388,  2391,  2394,  2397,  2400,  2403,
  15638. -  2406,  2409,  2412,  2415,  2418,  2421,  2424,  2427,  2430,  2433,
  15639. -  2436,  2439,  2442,  2446,  2449,  2452,  2455,  2458,  2462,  2465,
  15640. -  2468,  2473,  2478,  2482
  15641. +   745,   747,   749,   751,   753,   755,   758,   761,   763,   765,
  15642. +   767,   769,   771,   773,   775,   779,   783,   784,   789,   790,
  15643. +   797,   800,   805,   808,   811,   813,   818,   820,   828,   836,
  15644. +   844,   852,   857,   862,   865,   868,   870,   875,   878,   881,
  15645. +   884,   890,   894,   900,   904,   909,   916,   918,   921,   923,
  15646. +   926,   928,   930,   932,   935,   936,   939,   942,   946,   950,
  15647. +   954,   958,   962,   965,   968,   970,   972,   974,   977,   980,
  15648. +   983,   986,   988,   990,   992,   994,   997,  1000,  1004,  1008,
  15649. +  1013,  1015,  1018,  1021,  1023,  1025,  1028,  1031,  1033,  1036,
  15650. +  1039,  1043,  1045,  1048,  1050,  1052,  1054,  1059,  1064,  1069,
  15651. +  1074,  1076,  1078,  1080,  1082,  1086,  1088,  1092,  1094,  1098,
  15652. +  1099,  1104,  1105,  1113,  1118,  1119,  1127,  1132,  1133,  1141,
  15653. +  1146,  1147,  1155,  1160,  1161,  1163,  1165,  1168,  1175,  1177,
  15654. +  1181,  1182,  1184,  1189,  1196,  1201,  1203,  1205,  1207,  1209,
  15655. +  1211,  1215,  1217,  1220,  1224,  1229,  1231,  1233,  1237,  1242,
  15656. +  1249,  1253,  1259,  1260,  1268,  1273,  1274,  1281,  1285,  1288,
  15657. +  1291,  1296,  1298,  1299,  1301,  1302,  1304,  1306,  1309,  1312,
  15658. +  1315,  1318,  1322,  1325,  1328,  1331,  1335,  1339,  1341,  1344,
  15659. +  1345,  1346,  1350,  1354,  1357,  1359,  1361,  1362,  1364,  1367,
  15660. +  1369,  1373,  1375,  1378,  1380,  1385,  1390,  1392,  1394,  1397,
  15661. +  1400,  1402,  1403,  1405,  1410,  1414,  1416,  1419,  1422,  1425,
  15662. +  1428,  1431,  1434,  1437,  1440,  1445,  1448,  1450,  1456,  1460,
  15663. +  1461,  1463,  1467,  1468,  1470,  1474,  1476,  1478,  1480,  1482,
  15664. +  1487,  1494,  1499,  1504,  1511,  1516,  1520,  1525,  1532,  1537,
  15665. +  1542,  1549,  1554,  1558,  1560,  1564,  1566,  1570,  1573,  1575,
  15666. +  1582,  1583,  1586,  1588,  1591,  1592,  1595,  1599,  1603,  1606,
  15667. +  1609,  1613,  1615,  1617,  1619,  1622,  1628,  1634,  1638,  1644,
  15668. +  1649,  1653,  1657,  1660,  1662,  1666,  1670,  1673,  1676,  1680,
  15669. +  1682,  1686,  1690,  1693,  1696,  1700,  1702,  1708,  1714,  1718,
  15670. +  1724,  1728,  1732,  1737,  1741,  1744,  1747,  1749,  1752,  1757,
  15671. +  1762,  1765,  1767,  1769,  1771,  1774,  1777,  1780,  1782,  1785,
  15672. +  1787,  1790,  1793,  1797,  1799,  1803,  1806,  1810,  1813,  1816,
  15673. +  1820,  1822,  1826,  1831,  1835,  1838,  1841,  1843,  1847,  1850,
  15674. +  1853,  1855,  1858,  1862,  1864,  1868,  1870,  1876,  1880,  1885,
  15675. +  1889,  1894,  1897,  1900,  1904,  1907,  1909,  1911,  1914,  1917,
  15676. +  1920,  1921,  1922,  1924,  1926,  1929,  1933,  1935,  1938,  1942,
  15677. +  1948,  1955,  1961,  1962,  1963,  1970,  1972,  1975,  1977,  1979,
  15678. +  1981,  1984,  1985,  1990,  1992,  1993,  1994,  2001,  2002,  2003,
  15679. +  2011,  2012,  2013,  2014,  2025,  2026,  2027,  2028,  2039,  2040,
  15680. +  2048,  2049,  2055,  2056,  2064,  2065,  2070,  2073,  2076,  2079,
  15681. +  2083,  2090,  2099,  2110,  2123,  2128,  2132,  2135,  2138,  2140,
  15682. +  2142,  2143,  2144,  2152,  2154,  2157,  2160,  2161,  2162,  2168,
  15683. +  2170,  2172,  2176,  2180,  2183,  2186,  2189,  2193,  2198,  2203,
  15684. +  2207,  2212,  2219,  2226,  2227,  2229,  2230,  2232,  2234,  2235,
  15685. +  2237,  2239,  2243,  2248,  2250,  2254,  2255,  2257,  2259,  2261,
  15686. +  2264,  2267,  2270,  2272,  2274,  2277,  2280,  2283,  2286,  2288,
  15687. +  2292,  2295,  2298,  2303,  2306,  2309,  2312,  2315,  2318,  2321,
  15688. +  2323,  2326,  2328,  2332,  2334,  2336,  2337,  2338,  2340,  2341,
  15689. +  2346,  2348,  2350,  2354,  2355,  2359,  2363,  2367,  2369,  2372,
  15690. +  2375,  2378,  2381,  2384,  2387,  2390,  2393,  2396,  2399,  2402,
  15691. +  2405,  2408,  2411,  2414,  2417,  2420,  2423,  2426,  2429,  2432,
  15692. +  2435,  2438,  2442,  2445,  2448,  2451,  2454,  2458,  2461,  2464,
  15693. +  2469,  2474,  2478
  15694.  };
  15695.  
  15696.  static const short yyrhs[] = {    -1,
  15697. @@ -389,179 +389,178 @@
  15698.       0,    92,     0,    92,   169,     0,    83,   330,   139,     0,
  15699.     337,     0,     3,     0,    53,     0,   170,     0,     4,     0,
  15700.     170,     0,   263,     0,    75,   172,     0,    65,   172,     0,
  15701. -    88,   172,   102,     0,   261,     0,   170,     0,   263,     0,
  15702. -    88,   172,   102,     0,   170,     0,     8,     0,   179,     0,
  15703. -   180,     0,    88,   153,   102,     0,    88,     1,   102,     0,
  15704. -     0,    88,   175,   284,   102,     0,     0,   174,    88,   161,
  15705. -   102,   176,   151,     0,   174,    44,     0,   174,    89,   153,
  15706. -   105,     0,   174,    81,     0,   174,    82,     0,    40,     0,
  15707. -     7,    88,   161,   102,     0,   265,     0,    47,    69,   186,
  15708. -    70,    88,   153,   102,     0,    48,    69,   186,    70,    88,
  15709. -   153,   102,     0,    49,    69,   186,    70,    88,   153,   102,
  15710. -     0,    50,    69,   186,    70,    88,   153,   102,     0,    46,
  15711. -    88,   153,   102,     0,    46,    88,   186,   102,     0,   272,
  15712. -     3,     0,   272,   337,     0,   264,     0,   264,    88,   161,
  15713. -   102,     0,   264,    44,     0,   182,   171,     0,   182,   262,
  15714. -     0,   182,   171,    88,   161,   102,     0,   182,   171,    44,
  15715. -     0,   182,   262,    88,   161,   102,     0,   182,   262,    44,
  15716. -     0,   182,    83,     6,    44,     0,   182,     6,    51,    83,
  15717. -     6,    44,     0,    38,     0,   272,    38,     0,    37,     0,
  15718. -   272,   178,     0,    42,     0,    43,     0,     9,     0,   180,
  15719. -     9,     0,     0,   174,    87,     0,   174,    86,     0,   193,
  15720. -   184,    56,     0,   187,   184,    56,     0,   193,   195,    56,
  15721. -     0,   187,   195,    56,     0,   190,   196,    56,     0,   187,
  15722. -    56,     0,   190,    56,     0,   255,     0,   259,     0,    44,
  15723. -     0,   185,    44,     0,   191,   275,     0,   252,   275,     0,
  15724. -   193,   275,     0,   191,     0,   252,     0,   191,     0,   188,
  15725. -     0,   190,   193,     0,   193,   189,     0,   190,   193,   189,
  15726. -     0,   190,   193,   192,     0,   190,   193,   192,   189,     0,
  15727. -     5,     0,   189,   194,     0,   189,     5,     0,   252,     0,
  15728. -     5,     0,   190,     7,     0,   190,     5,     0,   193,     0,
  15729. -   252,   193,     0,   193,   192,     0,   252,   193,   192,     0,
  15730. -   194,     0,   192,   194,     0,   216,     0,     6,     0,   269,
  15731. -     0,    27,    88,   153,   102,     0,    27,    88,   186,   102,
  15732. -     0,    31,    88,   153,   102,     0,    31,    88,   186,   102,
  15733. -     0,     6,     0,     7,     0,   216,     0,   199,     0,   195,
  15734. -    55,   201,     0,   203,     0,   196,    55,   201,     0,   205,
  15735. -     0,   197,    55,   201,     0,     0,   111,    88,   180,   102,
  15736. -     0,     0,   184,   332,   198,   207,    58,   200,   214,     0,
  15737. -   184,   332,   198,   207,     0,     0,   184,   332,   198,   207,
  15738. -    58,   202,   214,     0,   184,   332,   198,   207,     0,     0,
  15739. -   259,   332,   198,   207,    58,   204,   214,     0,   259,   332,
  15740. -   198,   207,     0,     0,   259,   332,   198,   207,    58,   206,
  15741. -   214,     0,   259,   332,   198,   207,     0,     0,   208,     0,
  15742. -   209,     0,   208,   209,     0,    32,    88,    88,   210,   102,
  15743. -   102,     0,   211,     0,   210,    55,   211,     0,     0,   212,
  15744. -     0,   212,    88,     3,   102,     0,   212,    88,     3,    55,
  15745. -   161,   102,     0,   212,    88,   161,   102,     0,   139,     0,
  15746. -     5,     0,     6,     0,     7,     0,   139,     0,   213,    55,
  15747. -   139,     0,   169,     0,    54,   103,     0,    54,   215,   103,
  15748. -     0,    54,   215,    55,   103,     0,     1,     0,   214,     0,
  15749. -   215,    55,   214,     0,    89,   169,   105,   214,     0,   215,
  15750. -    55,    19,   169,    60,   214,     0,   139,    60,   214,     0,
  15751. -   215,    55,   139,    60,   214,     0,     0,    12,   139,    54,
  15752. -   217,   248,   220,   103,     0,    12,   139,    54,   103,     0,
  15753. -     0,    12,    54,   218,   248,   220,   103,     0,    12,    54,
  15754. -   103,     0,    12,   139,     0,    12,   270,     0,   229,   235,
  15755. -   236,   103,     0,   229,     0,     0,    55,     0,     0,    55,
  15756. -     0,    35,     0,   221,     5,     0,   221,     6,     0,   221,
  15757. -     7,     0,   221,    35,     0,   221,   144,    56,     0,   221,
  15758. -   139,     0,   221,   270,     0,   221,   143,     0,   221,   144,
  15759. -    54,     0,   221,   144,    60,     0,   222,     0,   221,   141,
  15760. -     0,     0,     0,   223,   225,   230,     0,   224,   226,   230,
  15761. -     0,   221,    54,     0,   228,     0,   227,     0,     0,    60,
  15762. -     0,    60,   231,     0,   232,     0,   231,    55,   232,     0,
  15763. -   233,     0,   234,   233,     0,   269,     0,    31,    88,   153,
  15764. -   102,     0,    31,    88,   186,   102,     0,    36,     0,     5,
  15765. -     0,   234,    36,     0,   234,     5,     0,    54,     0,     0,
  15766. -   237,     0,   236,    36,    60,   237,     0,   236,    36,    60,
  15767. -     0,   238,     0,   237,   238,     0,   237,    56,     0,   239,
  15768. -    56,     0,   239,   103,     0,   132,    60,     0,   132,    54,
  15769. -     0,   187,   240,     0,   190,   241,     0,   259,   332,   198,
  15770. -   207,     0,    60,   169,     0,     1,     0,   187,    88,   323,
  15771. -   102,   251,     0,   187,    44,   251,     0,     0,   242,     0,
  15772. -   240,    55,   243,     0,     0,   245,     0,   241,    55,   247,
  15773. -     0,   244,     0,   245,     0,   246,     0,   247,     0,   255,
  15774. +   261,     0,   170,     0,   263,     0,   170,     0,     8,     0,
  15775. +   179,     0,   180,     0,    88,   153,   102,     0,    88,     1,
  15776. +   102,     0,     0,    88,   175,   284,   102,     0,     0,   174,
  15777. +    88,   161,   102,   176,   151,     0,   174,    44,     0,   174,
  15778. +    89,   153,   105,     0,   174,    81,     0,   174,    82,     0,
  15779. +    40,     0,     7,    88,   161,   102,     0,   265,     0,    47,
  15780. +    69,   186,    70,    88,   153,   102,     0,    48,    69,   186,
  15781. +    70,    88,   153,   102,     0,    49,    69,   186,    70,    88,
  15782. +   153,   102,     0,    50,    69,   186,    70,    88,   153,   102,
  15783. +     0,    46,    88,   153,   102,     0,    46,    88,   186,   102,
  15784. +     0,   272,     3,     0,   272,   337,     0,   264,     0,   264,
  15785. +    88,   161,   102,     0,   264,    44,     0,   182,   171,     0,
  15786. +   182,   262,     0,   182,   171,    88,   161,   102,     0,   182,
  15787. +   171,    44,     0,   182,   262,    88,   161,   102,     0,   182,
  15788. +   262,    44,     0,   182,    83,     6,    44,     0,   182,     6,
  15789. +    51,    83,     6,    44,     0,    38,     0,   272,    38,     0,
  15790. +    37,     0,   272,   178,     0,    42,     0,    43,     0,     9,
  15791. +     0,   180,     9,     0,     0,   174,    87,     0,   174,    86,
  15792. +     0,   193,   184,    56,     0,   187,   184,    56,     0,   193,
  15793. +   195,    56,     0,   187,   195,    56,     0,   190,   196,    56,
  15794. +     0,   187,    56,     0,   190,    56,     0,   255,     0,   259,
  15795. +     0,    44,     0,   185,    44,     0,   191,   275,     0,   252,
  15796. +   275,     0,   193,   275,     0,   191,     0,   252,     0,   191,
  15797. +     0,   188,     0,   190,   193,     0,   193,   189,     0,   190,
  15798. +   193,   189,     0,   190,   193,   192,     0,   190,   193,   192,
  15799. +   189,     0,     5,     0,   189,   194,     0,   189,     5,     0,
  15800. +   252,     0,     5,     0,   190,     7,     0,   190,     5,     0,
  15801. +   193,     0,   252,   193,     0,   193,   192,     0,   252,   193,
  15802. +   192,     0,   194,     0,   192,   194,     0,   216,     0,     6,
  15803. +     0,   269,     0,    27,    88,   153,   102,     0,    27,    88,
  15804. +   186,   102,     0,    31,    88,   153,   102,     0,    31,    88,
  15805. +   186,   102,     0,     6,     0,     7,     0,   216,     0,   199,
  15806. +     0,   195,    55,   201,     0,   203,     0,   196,    55,   201,
  15807. +     0,   205,     0,   197,    55,   201,     0,     0,   111,    88,
  15808. +   180,   102,     0,     0,   184,   332,   198,   207,    58,   200,
  15809. +   214,     0,   184,   332,   198,   207,     0,     0,   184,   332,
  15810. +   198,   207,    58,   202,   214,     0,   184,   332,   198,   207,
  15811. +     0,     0,   259,   332,   198,   207,    58,   204,   214,     0,
  15812. +   259,   332,   198,   207,     0,     0,   259,   332,   198,   207,
  15813. +    58,   206,   214,     0,   259,   332,   198,   207,     0,     0,
  15814. +   208,     0,   209,     0,   208,   209,     0,    32,    88,    88,
  15815. +   210,   102,   102,     0,   211,     0,   210,    55,   211,     0,
  15816. +     0,   212,     0,   212,    88,     3,   102,     0,   212,    88,
  15817. +     3,    55,   161,   102,     0,   212,    88,   161,   102,     0,
  15818. +   139,     0,     5,     0,     6,     0,     7,     0,   139,     0,
  15819. +   213,    55,   139,     0,   169,     0,    54,   103,     0,    54,
  15820. +   215,   103,     0,    54,   215,    55,   103,     0,     1,     0,
  15821. +   214,     0,   215,    55,   214,     0,    89,   169,   105,   214,
  15822. +     0,   215,    55,    19,   169,    60,   214,     0,   139,    60,
  15823. +   214,     0,   215,    55,   139,    60,   214,     0,     0,    12,
  15824. +   139,    54,   217,   248,   220,   103,     0,    12,   139,    54,
  15825. +   103,     0,     0,    12,    54,   218,   248,   220,   103,     0,
  15826. +    12,    54,   103,     0,    12,   139,     0,    12,   270,     0,
  15827. +   229,   235,   236,   103,     0,   229,     0,     0,    55,     0,
  15828. +     0,    55,     0,    35,     0,   221,     5,     0,   221,     6,
  15829. +     0,   221,     7,     0,   221,    35,     0,   221,   144,    56,
  15830. +     0,   221,   139,     0,   221,   270,     0,   221,   143,     0,
  15831. +   221,   144,    54,     0,   221,   144,    60,     0,   222,     0,
  15832. +   221,   141,     0,     0,     0,   223,   225,   230,     0,   224,
  15833. +   226,   230,     0,   221,    54,     0,   228,     0,   227,     0,
  15834. +     0,    60,     0,    60,   231,     0,   232,     0,   231,    55,
  15835. +   232,     0,   233,     0,   234,   233,     0,   269,     0,    31,
  15836. +    88,   153,   102,     0,    31,    88,   186,   102,     0,    36,
  15837. +     0,     5,     0,   234,    36,     0,   234,     5,     0,    54,
  15838. +     0,     0,   237,     0,   236,    36,    60,   237,     0,   236,
  15839. +    36,    60,     0,   238,     0,   237,   238,     0,   237,    56,
  15840. +     0,   239,    56,     0,   239,   103,     0,   132,    60,     0,
  15841. +   132,    54,     0,   187,   240,     0,   190,   241,     0,   259,
  15842. +   332,   198,   207,     0,    60,   169,     0,     1,     0,   187,
  15843. +    88,   323,   102,   251,     0,   187,    44,   251,     0,     0,
  15844. +   242,     0,   240,    55,   243,     0,     0,   245,     0,   241,
  15845. +    55,   247,     0,   244,     0,   245,     0,   246,     0,   247,
  15846. +     0,   255,   332,   198,   207,     0,   255,   332,   198,   207,
  15847. +    58,   214,     0,     4,    60,   169,   207,     0,   259,   332,
  15848. +   198,   207,     0,   259,   332,   198,   207,    58,   214,     0,
  15849. +     3,    60,   169,   207,     0,    60,   169,   207,     0,   255,
  15850.     332,   198,   207,     0,   255,   332,   198,   207,    58,   214,
  15851.       0,     4,    60,   169,   207,     0,   259,   332,   198,   207,
  15852.       0,   259,   332,   198,   207,    58,   214,     0,     3,    60,
  15853. -   169,   207,     0,    60,   169,   207,     0,   255,   332,   198,
  15854. -   207,     0,   255,   332,   198,   207,    58,   214,     0,     4,
  15855. -    60,   169,   207,     0,   259,   332,   198,   207,     0,   259,
  15856. -   332,   198,   207,    58,   214,     0,     3,    60,   169,   207,
  15857. -     0,    60,   169,   207,     0,   249,     0,   248,    55,   249,
  15858. -     0,   139,     0,   139,    58,   169,     0,   312,   273,     0,
  15859. -   312,     0,    88,   186,   102,    89,   153,   105,     0,     0,
  15860. -   251,     7,     0,     7,     0,   252,     7,     0,     0,   254,
  15861. -   153,     0,    75,   252,   255,     0,    65,   252,   255,     0,
  15862. -    75,   255,     0,    65,   255,     0,   271,   251,   255,     0,
  15863. -   258,     0,   266,     0,   257,     0,   267,   266,     0,   258,
  15864. -    88,   161,   102,   251,     0,   258,    88,   323,   102,   251,
  15865. -     0,   258,    44,   251,     0,   258,    88,     1,   102,   251,
  15866. -     0,   258,    89,   253,   105,     0,   258,    89,   105,     0,
  15867. -    88,   255,   102,     0,   267,   266,     0,   266,     0,    75,
  15868. -   252,   259,     0,    65,   252,   259,     0,    75,   259,     0,
  15869. -    65,   259,     0,   271,   251,   259,     0,   173,     0,    75,
  15870. -   252,   259,     0,    65,   252,   259,     0,    75,   260,     0,
  15871. -    65,   260,     0,   271,   251,   259,     0,   261,     0,   173,
  15872. -    88,   161,   102,   251,     0,   173,    88,   323,   102,   251,
  15873. -     0,   173,    44,   251,     0,   173,    88,     1,   102,   251,
  15874. -     0,    88,   260,   102,     0,   173,    89,   253,   105,     0,
  15875. -   173,    89,   105,     0,   267,   171,     0,   267,   170,     0,
  15876. -   263,     0,   272,   263,     0,   193,    88,   161,   102,     0,
  15877. -   193,    88,   172,   102,     0,   193,   185,     0,     4,     0,
  15878. -   143,     0,   268,     0,   267,   268,     0,     4,    51,     0,
  15879. -   143,    51,     0,   256,     0,   272,   256,     0,   257,     0,
  15880. -   272,   256,     0,   267,    75,     0,   272,   267,    75,     0,
  15881. -    51,     0,    75,   251,   273,     0,    75,   251,     0,    65,
  15882. -   251,   273,     0,    65,   251,     0,   271,   251,     0,   271,
  15883. -   251,   273,     0,   274,     0,    89,   153,   105,     0,   274,
  15884. -    89,   253,   105,     0,    75,   252,   275,     0,    75,   275,
  15885. -     0,    75,   252,     0,    75,     0,    65,   252,   275,     0,
  15886. -    65,   275,     0,    65,   252,     0,    65,     0,   271,   251,
  15887. -     0,   271,   251,   275,     0,   276,     0,    88,   275,   102,
  15888. -     0,    85,     0,   276,    88,   323,   102,   251,     0,   276,
  15889. -    44,   251,     0,   276,    89,   253,   105,     0,   276,    89,
  15890. -   105,     0,    88,   324,   102,   251,     0,   166,   251,     0,
  15891. -   185,   251,     0,    89,   253,   105,     0,    89,   105,     0,
  15892. -   289,     0,   278,     0,   277,   289,     0,   277,   278,     0,
  15893. -     1,    56,     0,     0,     0,   281,     0,   282,     0,   281,
  15894. -   282,     0,    34,   213,    56,     0,   284,     0,     1,   284,
  15895. -     0,    54,   279,   103,     0,    54,   279,   280,   277,   103,
  15896. -     0,    54,   279,   280,   277,     1,   103,     0,    54,   279,
  15897. -   280,     1,   103,     0,     0,     0,    13,   286,   279,   155,
  15898. -   287,   288,     0,   284,     0,   279,   290,     0,   284,     0,
  15899. -   290,     0,   183,     0,   153,    56,     0,     0,   285,    14,
  15900. -   291,   288,     0,   285,     0,     0,     0,    15,   292,   279,
  15901. -   155,   293,   159,     0,     0,     0,    16,   294,   288,    15,
  15902. -   295,   154,    56,     0,     0,     0,     0,   315,   296,   279,
  15903. -   156,    56,   297,   318,   102,   298,   159,     0,     0,     0,
  15904. -     0,   316,   299,   279,   156,    56,   300,   318,   102,   301,
  15905. -   159,     0,     0,    18,   279,    88,   157,   102,   302,   288,
  15906. -     0,     0,    19,   169,    60,   303,   289,     0,     0,    19,
  15907. -   169,    10,   169,    60,   304,   289,     0,     0,    20,    60,
  15908. -   305,   289,     0,    21,    56,     0,    22,    56,     0,    23,
  15909. -    56,     0,    23,   153,    56,     0,   111,   317,    88,   180,
  15910. -   102,    56,     0,   111,   317,    88,   180,    60,   319,   102,
  15911. -    56,     0,   111,   317,    88,   180,    60,   319,    60,   319,
  15912. -   102,    56,     0,   111,   317,    88,   180,    60,   319,    60,
  15913. -   319,    60,   322,   102,    56,     0,    24,    75,   153,    56,
  15914. -     0,    24,   139,    56,     0,   314,   289,     0,   314,   103,
  15915. -     0,    56,     0,   306,     0,     0,     0,    90,    54,   279,
  15916. -   307,   309,   308,   310,     0,   103,     0,   277,   103,     0,
  15917. -     1,   103,     0,     0,     0,   310,    91,   311,   313,   284,
  15918. -     0,   191,     0,   252,     0,    88,    10,   102,     0,    88,
  15919. -   329,   102,     0,     3,    60,     0,    53,    60,     0,     4,
  15920. -    60,     0,    17,    88,    56,     0,    17,    88,   153,    56,
  15921. -     0,    17,    88,    54,   103,     0,    17,    88,   183,     0,
  15922. -    17,    88,     1,    56,     0,    17,    88,    54,   279,   277,
  15923. -   103,     0,    17,    88,    54,   279,     1,   103,     0,     0,
  15924. -     7,     0,     0,   153,     0,     1,     0,     0,   320,     0,
  15925. -   321,     0,   320,    55,   321,     0,     9,    88,   153,   102,
  15926. -     0,     9,     0,   322,    55,     9,     0,     0,   324,     0,
  15927. -   186,     0,   325,     0,   326,    10,     0,   325,    10,     0,
  15928. -   186,    10,     0,    10,     0,    93,     0,   325,    93,     0,
  15929. -   186,    93,     0,   325,    60,     0,   186,    60,     0,   327,
  15930. -     0,   329,    58,   214,     0,   326,   328,     0,   326,   331,
  15931. -     0,   326,   331,    58,   214,     0,   325,    55,     0,   186,
  15932. -    55,     0,   188,   184,     0,   191,   184,     0,   193,   184,
  15933. -     0,   188,   275,     0,   188,     0,   190,   259,     0,   329,
  15934. -     0,   329,    58,   214,     0,   327,     0,   186,     0,     0,
  15935. -     0,   259,     0,     0,    92,    88,   334,   102,     0,   186,
  15936. -     0,   333,     0,   334,    55,   333,     0,     0,    75,   251,
  15937. -   335,     0,    65,   251,   335,     0,   271,   251,   335,     0,
  15938. -    41,     0,   336,    75,     0,   336,    76,     0,   336,    77,
  15939. -     0,   336,    73,     0,   336,    74,     0,   336,    65,     0,
  15940. -   336,    63,     0,   336,    64,     0,   336,    83,     0,   336,
  15941. -    55,     0,   336,    68,     0,   336,    69,     0,   336,    70,
  15942. -     0,   336,    67,     0,   336,    57,     0,   336,    58,     0,
  15943. -   336,    71,     0,   336,    72,     0,   336,    81,     0,   336,
  15944. -    82,     0,   336,    62,     0,   336,    61,     0,   336,   104,
  15945. -     0,   336,    59,    60,     0,   336,    66,     0,   336,    86,
  15946. -     0,   336,    78,     0,   336,    44,     0,   336,    89,   105,
  15947. -     0,   336,    38,     0,   336,    37,     0,   336,    38,    89,
  15948. -   105,     0,   336,    37,    89,   105,     0,   336,   312,   335,
  15949. -     0,   336,     1,     0
  15950. +   169,   207,     0,    60,   169,   207,     0,   249,     0,   248,
  15951. +    55,   249,     0,   139,     0,   139,    58,   169,     0,   312,
  15952. +   273,     0,   312,     0,    88,   186,   102,    89,   153,   105,
  15953. +     0,     0,   251,     7,     0,     7,     0,   252,     7,     0,
  15954. +     0,   254,   153,     0,    75,   252,   255,     0,    65,   252,
  15955. +   255,     0,    75,   255,     0,    65,   255,     0,   271,   251,
  15956. +   255,     0,   258,     0,   266,     0,   257,     0,   267,   266,
  15957. +     0,   258,    88,   161,   102,   251,     0,   258,    88,   323,
  15958. +   102,   251,     0,   258,    44,   251,     0,   258,    88,     1,
  15959. +   102,   251,     0,   258,    89,   253,   105,     0,   258,    89,
  15960. +   105,     0,    88,   255,   102,     0,   267,   266,     0,   266,
  15961. +     0,    75,   252,   259,     0,    65,   252,   259,     0,    75,
  15962. +   259,     0,    65,   259,     0,   271,   251,   259,     0,   173,
  15963. +     0,    75,   252,   259,     0,    65,   252,   259,     0,    75,
  15964. +   260,     0,    65,   260,     0,   271,   251,   259,     0,   261,
  15965. +     0,   173,    88,   161,   102,   251,     0,   173,    88,   323,
  15966. +   102,   251,     0,   173,    44,   251,     0,   173,    88,     1,
  15967. +   102,   251,     0,    88,   172,   102,     0,    88,   260,   102,
  15968. +     0,   173,    89,   253,   105,     0,   173,    89,   105,     0,
  15969. +   267,   171,     0,   267,   170,     0,   263,     0,   272,   263,
  15970. +     0,   193,    88,   161,   102,     0,   193,    88,   172,   102,
  15971. +     0,   193,   185,     0,     4,     0,   143,     0,   268,     0,
  15972. +   267,   268,     0,     4,    51,     0,   143,    51,     0,   256,
  15973. +     0,   272,   256,     0,   257,     0,   272,   256,     0,   267,
  15974. +    75,     0,   272,   267,    75,     0,    51,     0,    75,   251,
  15975. +   273,     0,    75,   251,     0,    65,   251,   273,     0,    65,
  15976. +   251,     0,   271,   251,     0,   271,   251,   273,     0,   274,
  15977. +     0,    89,   153,   105,     0,   274,    89,   253,   105,     0,
  15978. +    75,   252,   275,     0,    75,   275,     0,    75,   252,     0,
  15979. +    75,     0,    65,   252,   275,     0,    65,   275,     0,    65,
  15980. +   252,     0,    65,     0,   271,   251,     0,   271,   251,   275,
  15981. +     0,   276,     0,    88,   275,   102,     0,    85,     0,   276,
  15982. +    88,   323,   102,   251,     0,   276,    44,   251,     0,   276,
  15983. +    89,   253,   105,     0,   276,    89,   105,     0,    88,   324,
  15984. +   102,   251,     0,   166,   251,     0,   185,   251,     0,    89,
  15985. +   253,   105,     0,    89,   105,     0,   289,     0,   278,     0,
  15986. +   277,   289,     0,   277,   278,     0,     1,    56,     0,     0,
  15987. +     0,   281,     0,   282,     0,   281,   282,     0,    34,   213,
  15988. +    56,     0,   284,     0,     1,   284,     0,    54,   279,   103,
  15989. +     0,    54,   279,   280,   277,   103,     0,    54,   279,   280,
  15990. +   277,     1,   103,     0,    54,   279,   280,     1,   103,     0,
  15991. +     0,     0,    13,   286,   279,   155,   287,   288,     0,   284,
  15992. +     0,   279,   290,     0,   284,     0,   290,     0,   183,     0,
  15993. +   153,    56,     0,     0,   285,    14,   291,   288,     0,   285,
  15994. +     0,     0,     0,    15,   292,   279,   155,   293,   159,     0,
  15995. +     0,     0,    16,   294,   288,    15,   295,   154,    56,     0,
  15996. +     0,     0,     0,   315,   296,   279,   156,    56,   297,   318,
  15997. +   102,   298,   159,     0,     0,     0,     0,   316,   299,   279,
  15998. +   156,    56,   300,   318,   102,   301,   159,     0,     0,    18,
  15999. +   279,    88,   157,   102,   302,   288,     0,     0,    19,   169,
  16000. +    60,   303,   289,     0,     0,    19,   169,    10,   169,    60,
  16001. +   304,   289,     0,     0,    20,    60,   305,   289,     0,    21,
  16002. +    56,     0,    22,    56,     0,    23,    56,     0,    23,   153,
  16003. +    56,     0,   111,   317,    88,   180,   102,    56,     0,   111,
  16004. +   317,    88,   180,    60,   319,   102,    56,     0,   111,   317,
  16005. +    88,   180,    60,   319,    60,   319,   102,    56,     0,   111,
  16006. +   317,    88,   180,    60,   319,    60,   319,    60,   322,   102,
  16007. +    56,     0,    24,    75,   153,    56,     0,    24,   139,    56,
  16008. +     0,   314,   289,     0,   314,   103,     0,    56,     0,   306,
  16009. +     0,     0,     0,    90,    54,   279,   307,   309,   308,   310,
  16010. +     0,   103,     0,   277,   103,     0,     1,   103,     0,     0,
  16011. +     0,   310,    91,   311,   313,   284,     0,   191,     0,   252,
  16012. +     0,    88,    10,   102,     0,    88,   329,   102,     0,     3,
  16013. +    60,     0,    53,    60,     0,     4,    60,     0,    17,    88,
  16014. +    56,     0,    17,    88,   153,    56,     0,    17,    88,    54,
  16015. +   103,     0,    17,    88,   183,     0,    17,    88,     1,    56,
  16016. +     0,    17,    88,    54,   279,   277,   103,     0,    17,    88,
  16017. +    54,   279,     1,   103,     0,     0,     7,     0,     0,   153,
  16018. +     0,     1,     0,     0,   320,     0,   321,     0,   320,    55,
  16019. +   321,     0,     9,    88,   153,   102,     0,     9,     0,   322,
  16020. +    55,     9,     0,     0,   324,     0,   186,     0,   325,     0,
  16021. +   326,    10,     0,   325,    10,     0,   186,    10,     0,    10,
  16022. +     0,    93,     0,   325,    93,     0,   186,    93,     0,   325,
  16023. +    60,     0,   186,    60,     0,   327,     0,   329,    58,   214,
  16024. +     0,   326,   328,     0,   326,   331,     0,   326,   331,    58,
  16025. +   214,     0,   325,    55,     0,   186,    55,     0,   188,   184,
  16026. +     0,   191,   184,     0,   193,   184,     0,   188,   275,     0,
  16027. +   188,     0,   190,   259,     0,   329,     0,   329,    58,   214,
  16028. +     0,   327,     0,   186,     0,     0,     0,   259,     0,     0,
  16029. +    92,    88,   334,   102,     0,   186,     0,   333,     0,   334,
  16030. +    55,   333,     0,     0,    75,   251,   335,     0,    65,   251,
  16031. +   335,     0,   271,   251,   335,     0,    41,     0,   336,    75,
  16032. +     0,   336,    76,     0,   336,    77,     0,   336,    73,     0,
  16033. +   336,    74,     0,   336,    65,     0,   336,    63,     0,   336,
  16034. +    64,     0,   336,    83,     0,   336,    55,     0,   336,    68,
  16035. +     0,   336,    69,     0,   336,    70,     0,   336,    67,     0,
  16036. +   336,    57,     0,   336,    58,     0,   336,    71,     0,   336,
  16037. +    72,     0,   336,    81,     0,   336,    82,     0,   336,    62,
  16038. +     0,   336,    61,     0,   336,   104,     0,   336,    59,    60,
  16039. +     0,   336,    66,     0,   336,    86,     0,   336,    78,     0,
  16040. +   336,    44,     0,   336,    89,   105,     0,   336,    38,     0,
  16041. +   336,    37,     0,   336,    38,    89,   105,     0,   336,    37,
  16042. +    89,   105,     0,   336,   312,   335,     0,   336,     1,     0
  16043.  };
  16044.  
  16045.  #endif
  16046. @@ -590,59 +589,59 @@
  16047.    1144,  1146,  1163,  1166,  1168,  1170,  1172,  1174,  1176,  1178,
  16048.    1180,  1182,  1184,  1186,  1188,  1190,  1192,  1194,  1196,  1198,
  16049.    1200,  1202,  1204,  1206,  1208,  1215,  1217,  1234,  1237,  1238,
  16050. -  1239,  1242,  1244,  1247,  1249,  1250,  1252,  1254,  1258,  1260,
  16051. -  1261,  1264,  1268,  1288,  1289,  1290,  1292,  1294,  1296,  1304,
  16052. -  1325,  1330,  1337,  1344,  1346,  1355,  1360,  1383,  1427,  1428,
  16053. -  1431,  1434,  1437,  1440,  1442,  1445,  1484,  1491,  1493,  1495,
  16054. -  1497,  1499,  1501,  1516,  1531,  1542,  1554,  1561,  1610,  1612,
  16055. -  1616,  1618,  1622,  1625,  1630,  1632,  1636,  1649,  1650,  1656,
  16056. -  1667,  1675,  1681,  1686,  1688,  1693,  1700,  1702,  1706,  1710,
  16057. -  1716,  1719,  1721,  1723,  1725,  1733,  1735,  1737,  1740,  1742,
  16058. -  1744,  1746,  1751,  1757,  1759,  1770,  1773,  1775,  1778,  1793,
  16059. -  1796,  1798,  1800,  1804,  1807,  1815,  1816,  1817,  1818,  1822,
  16060. -  1826,  1840,  1858,  1859,  1860,  1863,  1865,  1868,  1870,  1873,
  16061. -  1875,  1878,  1881,  1885,  1902,  1904,  1922,  1928,  1929,  1935,
  16062. -  1943,  1945,  1954,  1962,  1964,  1975,  1978,  1982,  1985,  1989,
  16063. -  1994,  1997,  2001,  2004,  2006,  2008,  2010,  2017,  2019,  2020,
  16064. -  2021,  2025,  2028,  2032,  2034,  2037,  2040,  2043,  2049,  2052,
  16065. -  2055,  2057,  2059,  2061,  2065,  2069,  2073,  2076,  2079,  2083,
  16066. -  2086,  2088,  2092,  2143,  2158,  2160,  2163,  2165,  2169,  2170,
  16067. -  2172,  2174,  2176,  2180,  2189,  2192,  2194,  2196,  2202,  2204,
  16068. -  2207,  2212,  2215,  2218,  2227,  2238,  2243,  2243,  2245,  2248,
  16069. -  2250,  2254,  2256,  2260,  2288,  2319,  2321,  2343,  2367,  2369,
  16070. -  2373,  2399,  2408,  2470,  2473,  2480,  2491,  2500,  2504,  2517,
  16071. -  2520,  2522,  2527,  2529,  2533,  2541,  2545,  2548,  2550,  2561,
  16072. -  2566,  2574,  2577,  2578,  2589,  2592,  2593,  2604,  2606,  2609,
  16073. -  2611,  2614,  2619,  2623,  2629,  2634,  2638,  2642,  2648,  2652,
  16074. -  2655,  2660,  2664,  2667,  2670,  2679,  2681,  2685,  2688,  2693,
  16075. -  2696,  2700,  2709,  2712,  2716,  2719,  2727,  2729,  2734,  2737,
  16076. -  2739,  2741,  2743,  2747,  2750,  2764,  2767,  2772,  2775,  2777,
  16077. -  2779,  2781,  2783,  2785,  2787,  2791,  2797,  2800,  2802,  2804,
  16078. -  2806,  2810,  2813,  2816,  2818,  2820,  2822,  2826,  2829,  2832,
  16079. -  2834,  2836,  2838,  2840,  2842,  2846,  2852,  2858,  2860,  2864,
  16080. -  2867,  2869,  2873,  2875,  2878,  2880,  2886,  2889,  2903,  2905,
  16081. -  2909,  2911,  2915,  2918,  2924,  2930,  2933,  2935,  2937,  2939,
  16082. -  2943,  2947,  2951,  2954,  2959,  2962,  2964,  2966,  2968,  2970,
  16083. -  2972,  2974,  2976,  2980,  2984,  2988,  2992,  2993,  2995,  2997,
  16084. -  2999,  3001,  3003,  3005,  3007,  3009,  3017,  3019,  3020,  3021,
  16085. -  3024,  3031,  3041,  3043,  3048,  3050,  3053,  3067,  3070,  3073,
  16086. -  3077,  3081,  3085,  3091,  3094,  3098,  3100,  3103,  3109,  3112,
  16087. -  3115,  3118,  3131,  3134,  3139,  3145,  3150,  3153,  3158,  3162,
  16088. -  3165,  3171,  3176,  3179,  3184,  3193,  3197,  3200,  3206,  3216,
  16089. -  3223,  3229,  3254,  3254,  3286,  3286,  3302,  3302,  3306,  3310,
  16090. -  3313,  3318,  3325,  3334,  3343,  3352,  3355,  3361,  3363,  3367,
  16091. -  3369,  3372,  3376,  3379,  3382,  3390,  3394,  3400,  3402,  3404,
  16092. -  3408,  3410,  3413,  3426,  3431,  3439,  3441,  3445,  3448,  3450,
  16093. -  3454,  3457,  3459,  3461,  3467,  3471,  3475,  3478,  3479,  3485,
  16094. -  3487,  3490,  3492,  3496,  3501,  3504,  3514,  3521,  3522,  3529,
  16095. -  3535,  3540,  3544,  3549,  3556,  3560,  3564,  3569,  3580,  3594,
  16096. -  3597,  3599,  3601,  3603,  3607,  3609,  3617,  3634,  3636,  3638,
  16097. -  3640,  3642,  3646,  3649,  3653,  3655,  3658,  3680,  3686,  3693,
  16098. -  3696,  3700,  3705,  3707,  3714,  3717,  3719,  3721,  3727,  3731,
  16099. +  1239,  1242,  1244,  1247,  1249,  1250,  1252,  1256,  1258,  1259,
  16100. +  1264,  1284,  1285,  1286,  1288,  1290,  1292,  1300,  1321,  1326,
  16101. +  1333,  1340,  1342,  1351,  1356,  1379,  1423,  1424,  1427,  1430,
  16102. +  1433,  1436,  1438,  1441,  1480,  1487,  1489,  1491,  1493,  1495,
  16103. +  1497,  1512,  1527,  1538,  1550,  1557,  1606,  1608,  1612,  1614,
  16104. +  1618,  1621,  1626,  1628,  1632,  1645,  1646,  1652,  1663,  1671,
  16105. +  1677,  1682,  1684,  1689,  1696,  1698,  1702,  1706,  1712,  1715,
  16106. +  1717,  1719,  1721,  1729,  1731,  1733,  1736,  1738,  1740,  1742,
  16107. +  1747,  1753,  1755,  1766,  1769,  1771,  1774,  1789,  1792,  1794,
  16108. +  1796,  1800,  1803,  1811,  1812,  1813,  1814,  1818,  1822,  1836,
  16109. +  1854,  1855,  1856,  1859,  1861,  1864,  1866,  1869,  1871,  1874,
  16110. +  1877,  1881,  1898,  1900,  1918,  1924,  1925,  1931,  1939,  1941,
  16111. +  1950,  1958,  1960,  1971,  1974,  1978,  1981,  1985,  1990,  1993,
  16112. +  1997,  2000,  2002,  2004,  2006,  2013,  2015,  2016,  2017,  2021,
  16113. +  2024,  2028,  2030,  2033,  2036,  2039,  2045,  2048,  2051,  2053,
  16114. +  2055,  2057,  2061,  2065,  2069,  2072,  2075,  2079,  2082,  2084,
  16115. +  2088,  2139,  2154,  2156,  2159,  2161,  2165,  2166,  2168,  2170,
  16116. +  2172,  2176,  2185,  2188,  2190,  2192,  2198,  2200,  2203,  2208,
  16117. +  2211,  2214,  2223,  2234,  2239,  2239,  2241,  2244,  2246,  2250,
  16118. +  2252,  2256,  2284,  2315,  2317,  2339,  2363,  2365,  2369,  2395,
  16119. +  2404,  2466,  2469,  2476,  2487,  2496,  2500,  2513,  2516,  2518,
  16120. +  2523,  2525,  2529,  2537,  2541,  2544,  2546,  2557,  2562,  2570,
  16121. +  2573,  2574,  2585,  2588,  2589,  2600,  2602,  2605,  2607,  2610,
  16122. +  2615,  2619,  2625,  2630,  2634,  2638,  2644,  2648,  2651,  2656,
  16123. +  2660,  2663,  2666,  2675,  2677,  2681,  2684,  2689,  2692,  2696,
  16124. +  2705,  2708,  2712,  2715,  2723,  2725,  2730,  2733,  2735,  2737,
  16125. +  2739,  2743,  2746,  2760,  2763,  2768,  2771,  2773,  2775,  2777,
  16126. +  2779,  2781,  2783,  2787,  2793,  2796,  2798,  2800,  2802,  2806,
  16127. +  2809,  2812,  2814,  2816,  2818,  2822,  2825,  2828,  2830,  2832,
  16128. +  2834,  2836,  2838,  2840,  2844,  2850,  2856,  2858,  2862,  2865,
  16129. +  2867,  2871,  2873,  2876,  2878,  2884,  2887,  2901,  2903,  2907,
  16130. +  2909,  2913,  2916,  2922,  2928,  2931,  2933,  2935,  2937,  2941,
  16131. +  2945,  2949,  2952,  2957,  2960,  2962,  2964,  2966,  2968,  2970,
  16132. +  2972,  2974,  2978,  2982,  2986,  2990,  2991,  2993,  2995,  2997,
  16133. +  2999,  3001,  3003,  3005,  3007,  3015,  3017,  3018,  3019,  3022,
  16134. +  3029,  3039,  3041,  3046,  3048,  3051,  3065,  3068,  3071,  3075,
  16135. +  3079,  3083,  3089,  3092,  3096,  3098,  3101,  3107,  3110,  3113,
  16136. +  3116,  3129,  3132,  3137,  3143,  3148,  3151,  3156,  3160,  3163,
  16137. +  3169,  3174,  3177,  3182,  3191,  3195,  3198,  3204,  3214,  3221,
  16138. +  3227,  3252,  3252,  3284,  3284,  3300,  3300,  3304,  3308,  3311,
  16139. +  3316,  3323,  3332,  3341,  3350,  3353,  3359,  3361,  3365,  3367,
  16140. +  3370,  3374,  3377,  3380,  3388,  3392,  3398,  3400,  3402,  3406,
  16141. +  3408,  3411,  3424,  3429,  3437,  3439,  3443,  3446,  3448,  3452,
  16142. +  3455,  3457,  3459,  3465,  3469,  3473,  3476,  3477,  3483,  3485,
  16143. +  3488,  3490,  3494,  3499,  3502,  3512,  3519,  3520,  3527,  3533,
  16144. +  3538,  3542,  3547,  3554,  3558,  3562,  3567,  3578,  3592,  3595,
  16145. +  3597,  3599,  3601,  3605,  3607,  3615,  3632,  3634,  3636,  3638,
  16146. +  3640,  3644,  3647,  3651,  3653,  3656,  3678,  3684,  3691,  3694,
  16147. +  3698,  3703,  3705,  3712,  3715,  3717,  3719,  3725,  3729,  3732,
  16148.    3734,  3736,  3738,  3740,  3742,  3744,  3746,  3748,  3750,  3752,
  16149.    3754,  3756,  3758,  3760,  3762,  3764,  3766,  3768,  3770,  3772,
  16150.    3774,  3776,  3778,  3780,  3782,  3784,  3786,  3788,  3790,  3792,
  16151. -  3794,  3796,  3799,  3801
  16152. +  3794,  3797,  3799
  16153.  };
  16154.  
  16155.  static const char * const yytname[] = {   "$","error","$illegal.","IDENTIFIER",
  16156. @@ -727,59 +726,59 @@
  16157.     168,   168,   169,   169,   169,   169,   169,   169,   169,   169,
  16158.     169,   169,   169,   169,   169,   169,   169,   169,   169,   169,
  16159.     169,   169,   169,   169,   169,   169,   169,   170,   170,   170,
  16160. -   170,   171,   171,   172,   172,   172,   172,   172,   173,   173,
  16161. -   173,   173,   174,   174,   174,   174,   174,   174,   175,   174,
  16162. -   176,   174,   174,   174,   174,   174,   174,   174,   174,   174,
  16163. +   170,   171,   171,   172,   172,   172,   172,   173,   173,   173,
  16164. +   174,   174,   174,   174,   174,   174,   175,   174,   176,   174,
  16165.     174,   174,   174,   174,   174,   174,   174,   174,   174,   174,
  16166. -   174,   174,   174,   174,   174,   174,   174,   174,   177,   177,
  16167. -   178,   178,   179,   179,   180,   180,   181,   182,   182,   183,
  16168. -   183,   183,   183,   183,   183,   183,   184,   184,   185,   185,
  16169. -   186,   186,   186,   186,   186,   187,   187,   188,   188,   188,
  16170. -   188,   188,   189,   189,   189,   190,   190,   190,   190,   191,
  16171. -   191,   191,   191,   192,   192,   193,   193,   193,   193,   193,
  16172. -   193,   193,   194,   194,   194,   195,   195,   196,   196,   197,
  16173. -   197,   198,   198,   200,   199,   199,   202,   201,   201,   204,
  16174. -   203,   203,   206,   205,   205,   207,   207,   208,   208,   209,
  16175. -   210,   210,   211,   211,   211,   211,   211,   212,   212,   212,
  16176. -   212,   213,   213,   214,   214,   214,   214,   214,   215,   215,
  16177. -   215,   215,   215,   215,   217,   216,   216,   218,   216,   216,
  16178. -   216,   216,   216,   216,   219,   219,   220,   220,   221,   221,
  16179. -   221,   221,   221,   222,   223,   223,   223,   223,   223,   223,
  16180. -   224,   225,   226,   227,   227,   228,   229,   229,   230,   230,
  16181. -   230,   231,   231,   232,   232,   233,   233,   233,   234,   234,
  16182. -   234,   234,   235,   236,   236,   236,   236,   237,   237,   237,
  16183. -   238,   238,   238,   238,   239,   239,   239,   239,   239,   239,
  16184. -   239,   240,   240,   240,   241,   241,   241,   242,   242,   243,
  16185. -   243,   244,   244,   244,   245,   245,   245,   245,   246,   246,
  16186. -   246,   247,   247,   247,   247,   248,   248,   249,   249,   250,
  16187. -   250,   250,   251,   251,   252,   252,   254,   253,   255,   255,
  16188. -   255,   255,   255,   255,   256,   256,   257,   258,   258,   258,
  16189. -   258,   258,   258,   258,   258,   258,   259,   259,   259,   259,
  16190. -   259,   259,   260,   260,   260,   260,   260,   260,   261,   261,
  16191. -   261,   261,   261,   261,   261,   262,   263,   264,   264,   265,
  16192. -   265,   265,   266,   266,   267,   267,   268,   268,   269,   269,
  16193. -   270,   270,   271,   271,   272,   273,   273,   273,   273,   273,
  16194. -   273,   273,   274,   274,   275,   275,   275,   275,   275,   275,
  16195. -   275,   275,   275,   275,   275,   276,   276,   276,   276,   276,
  16196. -   276,   276,   276,   276,   276,   276,   277,   277,   277,   277,
  16197. -   278,   279,   280,   280,   281,   281,   282,   283,   283,   284,
  16198. -   284,   284,   284,   286,   287,   285,   288,   288,   289,   289,
  16199. -   290,   290,   291,   290,   290,   292,   293,   290,   294,   295,
  16200. -   290,   296,   297,   298,   290,   299,   300,   301,   290,   302,
  16201. -   290,   303,   290,   304,   290,   305,   290,   290,   290,   290,
  16202. +   174,   174,   174,   174,   174,   174,   174,   174,   174,   174,
  16203. +   174,   174,   174,   174,   174,   174,   177,   177,   178,   178,
  16204. +   179,   179,   180,   180,   181,   182,   182,   183,   183,   183,
  16205. +   183,   183,   183,   183,   184,   184,   185,   185,   186,   186,
  16206. +   186,   186,   186,   187,   187,   188,   188,   188,   188,   188,
  16207. +   189,   189,   189,   190,   190,   190,   190,   191,   191,   191,
  16208. +   191,   192,   192,   193,   193,   193,   193,   193,   193,   193,
  16209. +   194,   194,   194,   195,   195,   196,   196,   197,   197,   198,
  16210. +   198,   200,   199,   199,   202,   201,   201,   204,   203,   203,
  16211. +   206,   205,   205,   207,   207,   208,   208,   209,   210,   210,
  16212. +   211,   211,   211,   211,   211,   212,   212,   212,   212,   213,
  16213. +   213,   214,   214,   214,   214,   214,   215,   215,   215,   215,
  16214. +   215,   215,   217,   216,   216,   218,   216,   216,   216,   216,
  16215. +   216,   216,   219,   219,   220,   220,   221,   221,   221,   221,
  16216. +   221,   222,   223,   223,   223,   223,   223,   223,   224,   225,
  16217. +   226,   227,   227,   228,   229,   229,   230,   230,   230,   231,
  16218. +   231,   232,   232,   233,   233,   233,   234,   234,   234,   234,
  16219. +   235,   236,   236,   236,   236,   237,   237,   237,   238,   238,
  16220. +   238,   238,   239,   239,   239,   239,   239,   239,   239,   240,
  16221. +   240,   240,   241,   241,   241,   242,   242,   243,   243,   244,
  16222. +   244,   244,   245,   245,   245,   245,   246,   246,   246,   247,
  16223. +   247,   247,   247,   248,   248,   249,   249,   250,   250,   250,
  16224. +   251,   251,   252,   252,   254,   253,   255,   255,   255,   255,
  16225. +   255,   255,   256,   256,   257,   258,   258,   258,   258,   258,
  16226. +   258,   258,   258,   258,   259,   259,   259,   259,   259,   259,
  16227. +   260,   260,   260,   260,   260,   260,   261,   261,   261,   261,
  16228. +   261,   261,   261,   261,   262,   263,   264,   264,   265,   265,
  16229. +   265,   266,   266,   267,   267,   268,   268,   269,   269,   270,
  16230. +   270,   271,   271,   272,   273,   273,   273,   273,   273,   273,
  16231. +   273,   274,   274,   275,   275,   275,   275,   275,   275,   275,
  16232. +   275,   275,   275,   275,   276,   276,   276,   276,   276,   276,
  16233. +   276,   276,   276,   276,   276,   277,   277,   277,   277,   278,
  16234. +   279,   280,   280,   281,   281,   282,   283,   283,   284,   284,
  16235. +   284,   284,   286,   287,   285,   288,   288,   289,   289,   290,
  16236. +   290,   291,   290,   290,   292,   293,   290,   294,   295,   290,
  16237. +   296,   297,   298,   290,   299,   300,   301,   290,   302,   290,
  16238. +   303,   290,   304,   290,   305,   290,   290,   290,   290,   290,
  16239.     290,   290,   290,   290,   290,   290,   290,   290,   290,   290,
  16240. -   290,   307,   308,   306,   309,   309,   309,   310,   311,   310,
  16241. -   312,   312,   313,   313,   314,   314,   314,   315,   315,   315,
  16242. -   316,   316,   316,   316,   317,   317,   318,   318,   318,   319,
  16243. -   319,   320,   320,   321,   322,   322,   323,   323,   323,   324,
  16244. -   324,   324,   324,   324,   324,   324,   324,   324,   324,   325,
  16245. -   325,   325,   325,   325,   326,   326,   327,   327,   327,   327,
  16246. -   327,   327,   328,   328,   329,   329,   330,   331,   331,   332,
  16247. -   332,   333,   334,   334,   335,   335,   335,   335,   336,   337,
  16248. +   307,   308,   306,   309,   309,   309,   310,   311,   310,   312,
  16249. +   312,   313,   313,   314,   314,   314,   315,   315,   315,   316,
  16250. +   316,   316,   316,   317,   317,   318,   318,   318,   319,   319,
  16251. +   320,   320,   321,   322,   322,   323,   323,   323,   324,   324,
  16252. +   324,   324,   324,   324,   324,   324,   324,   324,   325,   325,
  16253. +   325,   325,   325,   326,   326,   327,   327,   327,   327,   327,
  16254. +   327,   328,   328,   329,   329,   330,   331,   331,   332,   332,
  16255. +   333,   334,   334,   335,   335,   335,   335,   336,   337,   337,
  16256.     337,   337,   337,   337,   337,   337,   337,   337,   337,   337,
  16257.     337,   337,   337,   337,   337,   337,   337,   337,   337,   337,
  16258.     337,   337,   337,   337,   337,   337,   337,   337,   337,   337,
  16259. -   337,   337,   337,   337
  16260. +   337,   337,   337
  16261.  };
  16262.  
  16263.  static const short yyr2[] = {     0,
  16264. @@ -805,2029 +804,2024 @@
  16265.       4,     4,     1,     3,     3,     3,     3,     3,     3,     3,
  16266.       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
  16267.       3,     3,     5,     3,     3,     1,     2,     3,     1,     1,
  16268. -     1,     1,     1,     1,     1,     2,     2,     3,     1,     1,
  16269. -     1,     3,     1,     1,     1,     1,     3,     3,     0,     4,
  16270. -     0,     6,     2,     4,     2,     2,     1,     4,     1,     7,
  16271. -     7,     7,     7,     4,     4,     2,     2,     1,     4,     2,
  16272. -     2,     2,     5,     3,     5,     3,     4,     6,     1,     2,
  16273. -     1,     2,     1,     1,     1,     2,     0,     2,     2,     3,
  16274. -     3,     3,     3,     3,     2,     2,     1,     1,     1,     2,
  16275. -     2,     2,     2,     1,     1,     1,     1,     2,     2,     3,
  16276. -     3,     4,     1,     2,     2,     1,     1,     2,     2,     1,
  16277. -     2,     2,     3,     1,     2,     1,     1,     1,     4,     4,
  16278. -     4,     4,     1,     1,     1,     1,     3,     1,     3,     1,
  16279. -     3,     0,     4,     0,     7,     4,     0,     7,     4,     0,
  16280. -     7,     4,     0,     7,     4,     0,     1,     1,     2,     6,
  16281. -     1,     3,     0,     1,     4,     6,     4,     1,     1,     1,
  16282. -     1,     1,     3,     1,     2,     3,     4,     1,     1,     3,
  16283. -     4,     6,     3,     5,     0,     7,     4,     0,     6,     3,
  16284. -     2,     2,     4,     1,     0,     1,     0,     1,     1,     2,
  16285. -     2,     2,     2,     3,     2,     2,     2,     3,     3,     1,
  16286. -     2,     0,     0,     3,     3,     2,     1,     1,     0,     1,
  16287. -     2,     1,     3,     1,     2,     1,     4,     4,     1,     1,
  16288. -     2,     2,     1,     0,     1,     4,     3,     1,     2,     2,
  16289. -     2,     2,     2,     2,     2,     2,     4,     2,     1,     5,
  16290. -     3,     0,     1,     3,     0,     1,     3,     1,     1,     1,
  16291. -     1,     4,     6,     4,     4,     6,     4,     3,     4,     6,
  16292. -     4,     4,     6,     4,     3,     1,     3,     1,     3,     2,
  16293. -     1,     6,     0,     2,     1,     2,     0,     2,     3,     3,
  16294. -     2,     2,     3,     1,     1,     1,     2,     5,     5,     3,
  16295. -     5,     4,     3,     3,     2,     1,     3,     3,     2,     2,
  16296. -     3,     1,     3,     3,     2,     2,     3,     1,     5,     5,
  16297. -     3,     5,     3,     4,     3,     2,     2,     1,     2,     4,
  16298. -     4,     2,     1,     1,     1,     2,     2,     2,     1,     2,
  16299. -     1,     2,     2,     3,     1,     3,     2,     3,     2,     2,
  16300. -     3,     1,     3,     4,     3,     2,     2,     1,     3,     2,
  16301. -     2,     1,     2,     3,     1,     3,     1,     5,     3,     4,
  16302. -     3,     4,     2,     2,     3,     2,     1,     1,     2,     2,
  16303. -     2,     0,     0,     1,     1,     2,     3,     1,     2,     3,
  16304. -     5,     6,     5,     0,     0,     6,     1,     2,     1,     1,
  16305. -     1,     2,     0,     4,     1,     0,     0,     6,     0,     0,
  16306. -     7,     0,     0,     0,    10,     0,     0,     0,    10,     0,
  16307. -     7,     0,     5,     0,     7,     0,     4,     2,     2,     2,
  16308. -     3,     6,     8,    10,    12,     4,     3,     2,     2,     1,
  16309. -     1,     0,     0,     7,     1,     2,     2,     0,     0,     5,
  16310. -     1,     1,     3,     3,     2,     2,     2,     3,     4,     4,
  16311. -     3,     4,     6,     6,     0,     1,     0,     1,     1,     0,
  16312. -     1,     1,     3,     4,     1,     3,     0,     1,     1,     1,
  16313. -     2,     2,     2,     1,     1,     2,     2,     2,     2,     1,
  16314. -     3,     2,     2,     4,     2,     2,     2,     2,     2,     2,
  16315. -     1,     2,     1,     3,     1,     1,     0,     0,     1,     0,
  16316. -     4,     1,     1,     3,     0,     3,     3,     3,     1,     2,
  16317. +     1,     1,     1,     1,     1,     2,     2,     1,     1,     1,
  16318. +     1,     1,     1,     1,     3,     3,     0,     4,     0,     6,
  16319. +     2,     4,     2,     2,     1,     4,     1,     7,     7,     7,
  16320. +     7,     4,     4,     2,     2,     1,     4,     2,     2,     2,
  16321. +     5,     3,     5,     3,     4,     6,     1,     2,     1,     2,
  16322. +     1,     1,     1,     2,     0,     2,     2,     3,     3,     3,
  16323. +     3,     3,     2,     2,     1,     1,     1,     2,     2,     2,
  16324. +     2,     1,     1,     1,     1,     2,     2,     3,     3,     4,
  16325. +     1,     2,     2,     1,     1,     2,     2,     1,     2,     2,
  16326. +     3,     1,     2,     1,     1,     1,     4,     4,     4,     4,
  16327. +     1,     1,     1,     1,     3,     1,     3,     1,     3,     0,
  16328. +     4,     0,     7,     4,     0,     7,     4,     0,     7,     4,
  16329. +     0,     7,     4,     0,     1,     1,     2,     6,     1,     3,
  16330. +     0,     1,     4,     6,     4,     1,     1,     1,     1,     1,
  16331. +     3,     1,     2,     3,     4,     1,     1,     3,     4,     6,
  16332. +     3,     5,     0,     7,     4,     0,     6,     3,     2,     2,
  16333. +     4,     1,     0,     1,     0,     1,     1,     2,     2,     2,
  16334. +     2,     3,     2,     2,     2,     3,     3,     1,     2,     0,
  16335. +     0,     3,     3,     2,     1,     1,     0,     1,     2,     1,
  16336. +     3,     1,     2,     1,     4,     4,     1,     1,     2,     2,
  16337. +     1,     0,     1,     4,     3,     1,     2,     2,     2,     2,
  16338. +     2,     2,     2,     2,     4,     2,     1,     5,     3,     0,
  16339. +     1,     3,     0,     1,     3,     1,     1,     1,     1,     4,
  16340. +     6,     4,     4,     6,     4,     3,     4,     6,     4,     4,
  16341. +     6,     4,     3,     1,     3,     1,     3,     2,     1,     6,
  16342. +     0,     2,     1,     2,     0,     2,     3,     3,     2,     2,
  16343. +     3,     1,     1,     1,     2,     5,     5,     3,     5,     4,
  16344. +     3,     3,     2,     1,     3,     3,     2,     2,     3,     1,
  16345. +     3,     3,     2,     2,     3,     1,     5,     5,     3,     5,
  16346. +     3,     3,     4,     3,     2,     2,     1,     2,     4,     4,
  16347. +     2,     1,     1,     1,     2,     2,     2,     1,     2,     1,
  16348. +     2,     2,     3,     1,     3,     2,     3,     2,     2,     3,
  16349. +     1,     3,     4,     3,     2,     2,     1,     3,     2,     2,
  16350. +     1,     2,     3,     1,     3,     1,     5,     3,     4,     3,
  16351. +     4,     2,     2,     3,     2,     1,     1,     2,     2,     2,
  16352. +     0,     0,     1,     1,     2,     3,     1,     2,     3,     5,
  16353. +     6,     5,     0,     0,     6,     1,     2,     1,     1,     1,
  16354. +     2,     0,     4,     1,     0,     0,     6,     0,     0,     7,
  16355. +     0,     0,     0,    10,     0,     0,     0,    10,     0,     7,
  16356. +     0,     5,     0,     7,     0,     4,     2,     2,     2,     3,
  16357. +     6,     8,    10,    12,     4,     3,     2,     2,     1,     1,
  16358. +     0,     0,     7,     1,     2,     2,     0,     0,     5,     1,
  16359. +     1,     3,     3,     2,     2,     2,     3,     4,     4,     3,
  16360. +     4,     6,     6,     0,     1,     0,     1,     1,     0,     1,
  16361. +     1,     3,     4,     1,     3,     0,     1,     1,     1,     2,
  16362. +     2,     2,     1,     1,     2,     2,     2,     2,     1,     3,
  16363. +     2,     2,     4,     2,     2,     2,     2,     2,     2,     1,
  16364. +     2,     1,     3,     1,     1,     0,     0,     1,     0,     4,
  16365. +     1,     1,     3,     0,     3,     3,     3,     1,     2,     2,
  16366.       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  16367.       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  16368. -     2,     2,     3,     2,     2,     2,     2,     3,     2,     2,
  16369. -     4,     4,     3,     2
  16370. +     2,     3,     2,     2,     2,     2,     3,     2,     2,     4,
  16371. +     4,     3,     2
  16372.  };
  16373.  
  16374.  static const short yydefact[] = {     3,
  16375. -    10,    10,     5,     0,     4,     0,   220,   523,   307,   317,
  16376. -   475,     0,     8,     9,     0,     0,   389,     0,   709,     0,
  16377. -   535,   221,    64,     0,     0,   697,     0,    76,    21,     0,
  16378. -    11,     6,     0,    15,    14,    13,    12,   277,     0,   524,
  16379. -   117,   230,   502,     0,   297,     0,   296,   310,     0,   330,
  16380. -   316,     0,   400,   402,   403,   408,   407,   384,   306,   529,
  16381. -   486,     0,   229,   231,   485,     0,   525,   318,   473,     0,
  16382. -     0,   219,    62,    63,   527,     0,     0,   101,   102,   103,
  16383. -   378,   381,     0,   531,     0,   382,     0,     0,     0,    32,
  16384. -     0,   307,     0,    22,     0,     0,   400,     0,     0,     0,
  16385. -     0,   500,     0,     0,     0,   499,     0,     0,     0,     0,
  16386. -   230,     0,     0,     0,   229,   231,   473,     0,     3,     0,
  16387. -     0,     0,     0,   402,   403,   700,     0,    88,    83,   277,
  16388. -     0,     0,    60,   528,   124,   473,     0,   477,    61,     0,
  16389. -     0,     0,     0,     0,   326,   287,   484,   288,   496,     0,
  16390. -   473,   309,   308,    59,   298,     0,   328,     0,   303,   323,
  16391. -   324,   299,   312,   314,   325,     0,    54,   390,   391,   392,
  16392. -   393,   406,   107,   106,   108,   395,   401,   397,   117,   396,
  16393. -   409,   409,   423,     0,   476,   311,    72,     0,    75,   533,
  16394. -   517,   487,   526,     0,   530,     0,   744,   740,   739,   737,
  16395. -   719,   724,   725,     0,   731,   730,   716,   717,   715,   734,
  16396. -   723,   720,   721,   722,   726,   727,   713,   714,   710,   711,
  16397. -   712,   736,   728,   729,   718,   735,     0,   732,   641,   310,
  16398. -   642,   705,   475,   234,   275,     0,     0,     0,     0,   156,
  16399. -   271,   269,   247,   273,   274,     0,     0,     0,     0,     0,
  16400. -     0,     0,   129,   128,     0,   130,   131,     0,     0,   216,
  16401. -   132,     0,   118,     0,   189,     0,   193,   186,   121,   233,
  16402. -   155,     0,     0,   235,   236,     0,   120,   294,   310,   295,
  16403. -   518,   258,   249,     0,     0,     0,   400,   380,     0,   375,
  16404. -   532,     0,   133,   134,     0,     0,     0,     0,    31,     0,
  16405. -   110,   409,   125,   109,   115,     0,   498,     0,   497,   102,
  16406. -   103,   218,   227,     0,   506,   226,     0,   505,     0,   232,
  16407. -   513,     0,     0,    18,    10,     0,     7,     7,    48,    47,
  16408. -   700,     0,    34,    42,    38,    36,    43,    40,   332,    82,
  16409. -    89,    86,     0,     0,   277,     0,     0,     0,   572,    65,
  16410. -   578,    67,   113,   511,     0,   674,   675,   154,     0,   153,
  16411. -   669,   691,     0,   294,   310,   295,     0,   668,   670,   698,
  16412. -   680,     0,   515,     0,     0,     0,   482,     0,   481,     0,
  16413. -     0,     0,     0,   473,    70,    58,    73,     0,    57,   473,
  16414. -     0,   477,   495,     0,   300,   301,     0,    55,    71,    56,
  16415. -    74,   305,   304,   315,   700,   331,   398,   394,   399,   410,
  16416. -   404,   405,   439,     0,     0,   442,   445,     0,     0,   428,
  16417. -     0,   700,   313,     0,     0,   346,   474,   501,   534,     0,
  16418. -     0,   733,   738,   473,   473,     0,   473,   743,     0,     0,
  16419. -     0,   163,     0,     0,   165,     0,     0,     0,     0,     0,
  16420. -     0,     0,     0,   162,   159,   158,   160,     0,     0,     0,
  16421. -     0,   217,     0,   116,   161,     0,     0,   187,     0,     0,
  16422. -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  16423. +    10,    10,     5,     0,     4,     0,   220,   522,   305,   315,
  16424. +   473,     0,     8,     9,     0,     0,   387,     0,   708,     0,
  16425. +   534,   221,    64,     0,     0,   696,     0,    76,    21,     0,
  16426. +    11,     6,     0,    15,    14,    13,    12,   275,     0,   523,
  16427. +   117,   229,   500,     0,   295,     0,   294,   308,     0,   328,
  16428. +   314,     0,   398,   400,   401,   406,   405,   382,   304,   528,
  16429. +   484,     0,   228,   230,   483,     0,   524,   316,   471,     0,
  16430. +     0,   219,    62,    63,   526,     0,     0,   101,   102,   103,
  16431. +   376,   379,     0,   530,     0,   380,     0,     0,     0,    32,
  16432. +     0,   305,     0,    22,     0,     0,   398,     0,     0,     0,
  16433. +     0,   498,     0,     0,     0,   497,     0,     0,     0,   229,
  16434. +     0,     0,     0,   228,   230,   471,     0,     3,     0,     0,
  16435. +     0,     0,   400,   401,   699,     0,    88,    83,   275,     0,
  16436. +     0,    60,   527,   124,   471,     0,   475,    61,     0,     0,
  16437. +     0,     0,     0,   324,   285,   482,   286,   494,     0,   471,
  16438. +   307,   306,    59,   296,     0,   326,     0,   301,   321,   322,
  16439. +   297,   310,   312,   323,     0,    54,   388,   389,   390,   391,
  16440. +   404,   107,   106,   108,   393,   399,   395,   117,   394,   407,
  16441. +   407,   421,     0,   474,   309,    72,     0,    75,   532,   516,
  16442. +   485,   525,     0,   529,     0,   743,   739,   738,   736,   718,
  16443. +   723,   724,     0,   730,   729,   715,   716,   714,   733,   722,
  16444. +   719,   720,   721,   725,   726,   712,   713,   709,   710,   711,
  16445. +   735,   727,   728,   717,   734,     0,   731,   640,   308,   641,
  16446. +   704,   473,   232,   273,     0,     0,     0,     0,   156,   269,
  16447. +   267,   245,   271,   272,     0,     0,     0,     0,     0,     0,
  16448. +     0,   129,   128,     0,   130,   131,     0,     0,   216,   132,
  16449. +     0,   118,     0,   189,     0,   193,   186,   121,   231,   155,
  16450. +     0,     0,   233,   234,     0,   120,   292,   308,   293,   517,
  16451. +   256,   247,     0,     0,     0,   398,   378,     0,   373,   531,
  16452. +     0,   133,   134,     0,     0,     0,     0,    31,     0,   110,
  16453. +   407,   125,   109,   115,     0,   496,     0,   495,   102,   103,
  16454. +   218,   227,     0,   504,   226,     0,   503,   511,   512,     0,
  16455. +     0,    18,    10,     0,     7,     7,    48,    47,   699,     0,
  16456. +    34,    42,    38,    36,    43,    40,   330,    82,    89,    86,
  16457. +     0,     0,   275,     0,     0,     0,   571,    65,   577,    67,
  16458. +   113,   509,     0,   673,   674,   154,     0,   153,   668,   690,
  16459. +     0,   292,   308,   293,     0,   667,   669,   697,   679,     0,
  16460. +   514,     0,     0,     0,   480,     0,   479,     0,     0,     0,
  16461. +   471,    70,    58,    73,     0,    57,   471,     0,   475,   493,
  16462. +     0,   298,   299,     0,    55,    71,    56,    74,   303,   302,
  16463. +   313,   699,   329,   396,   392,   397,   408,   402,   403,   437,
  16464. +     0,     0,   440,   443,     0,     0,   426,     0,   699,   311,
  16465. +     0,     0,   344,   472,   499,   533,     0,     0,   732,   737,
  16466. +   471,   471,     0,   471,   742,     0,     0,     0,   163,     0,
  16467. +     0,   165,     0,     0,     0,     0,     0,     0,     0,     0,
  16468. +   162,   159,   158,   160,     0,     0,     0,     0,   217,     0,
  16469. +   116,   161,     0,     0,   187,     0,     0,     0,     0,     0,
  16470.       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  16471. -   243,   245,   246,   279,   278,     0,     0,     0,     0,     0,
  16472. -   167,   471,     0,   175,   276,   223,     0,   697,   222,   261,
  16473. -   262,     0,   289,   552,   548,   557,     0,   477,   473,   473,
  16474. -   473,   291,   555,     0,   522,   293,     0,   292,   260,     0,
  16475. -   256,   270,   272,   519,     0,   257,   112,   111,   468,   387,
  16476. -   466,   377,     0,   319,     0,     0,   320,   321,   322,    33,
  16477. -     0,    28,    24,   696,   310,    26,   695,    30,   693,   122,
  16478. -   114,   504,   503,   232,   507,     0,    17,    20,    19,   332,
  16479. -    53,    49,    51,    52,    50,    46,     0,     0,     0,     0,
  16480. -   346,   104,    94,   105,     0,    87,    90,     0,     0,     0,
  16481. -   368,     0,   364,    84,     0,     0,    66,    69,   579,   573,
  16482. -   473,   473,   673,   686,   679,   677,   552,   548,     0,   687,
  16483. -   473,   690,   692,   688,     0,   689,   473,   672,   685,   678,
  16484. -   676,   671,   699,   682,   683,     0,   514,   478,   480,   479,
  16485. -     0,     0,   494,     0,   346,   327,   490,     0,     0,     0,
  16486. -   493,     0,   483,   302,   329,   346,   332,   420,     0,   419,
  16487. -   411,   412,   414,     0,   416,   438,   434,   433,   220,   523,
  16488. -   473,     0,   667,   700,   435,   443,   448,   449,   700,   700,
  16489. -   436,   446,   700,     0,   383,   430,   429,   431,   432,   332,
  16490. -   702,   310,   703,     0,     0,     0,   345,   347,   348,   742,
  16491. -   741,   705,   705,   705,     0,     0,     0,   522,     0,     0,
  16492. -   523,     0,   157,     0,     0,     0,     0,     0,     0,   238,
  16493. -   237,     0,   184,   119,   220,   523,   221,     0,     0,   369,
  16494. -   385,     0,   215,   214,   659,   658,     0,   212,   211,   209,
  16495. -   210,   208,   207,   206,   203,   204,   205,   201,   202,   196,
  16496. -   197,   198,   199,   200,   194,   195,     0,     0,     0,     0,
  16497. -     0,     0,   169,   181,     0,     0,   168,   473,   473,     0,
  16498. -   473,   470,   542,     0,     0,     0,     0,   264,     0,   266,
  16499. -     0,   516,   551,   550,   547,   546,   696,     0,     0,   566,
  16500. -     0,     0,   563,   290,   564,   553,   473,   667,   477,   552,
  16501. -   548,     0,     0,   473,   233,     0,   518,     0,     0,     0,
  16502. -   388,     0,   387,   152,   151,   150,   149,     0,    23,     0,
  16503. -   395,     0,     0,    16,   346,    35,    39,    37,    41,     0,
  16504. -     0,    92,     0,    96,     0,   100,     0,    98,     0,   365,
  16505. -     0,    85,    68,     0,   580,     0,   574,   575,   512,   509,
  16506. -   551,   547,   552,   548,     0,   485,     0,   473,   553,   552,
  16507. -   548,     0,   233,     0,   518,   510,     0,   681,   336,   473,
  16508. -   473,   473,   492,   342,   346,     0,     0,   422,   421,   415,
  16509. -     0,     0,   441,   346,     0,    79,     0,   332,   332,     0,
  16510. -   332,     0,   346,     0,   701,     0,     0,   343,   349,   707,
  16511. -   706,   708,   248,   164,     0,     0,     0,   166,   190,   192,
  16512. -   191,   254,   255,     0,     0,     0,     0,   240,     0,     0,
  16513. -     0,     0,   185,     0,   241,   244,   179,   178,   171,     0,
  16514. -   170,   183,     0,     0,   539,   537,     0,   540,   477,   176,
  16515. -     0,     0,   267,     0,     0,   549,   545,   556,   473,   565,
  16516. -   554,   559,     0,   561,     0,     0,   520,   521,     0,   259,
  16517. -   469,   467,   379,     0,    25,    29,   694,     0,     0,    44,
  16518. -    93,    91,     0,     0,     0,     0,   366,   362,     0,     0,
  16519. -   220,   523,   584,   596,   599,     0,   572,     0,     0,     0,
  16520. -     0,     0,     0,   221,   630,     0,   655,     0,   591,     0,
  16521. -     0,   310,     0,   568,   589,   595,   567,   590,   631,     0,
  16522. -   602,   606,   576,   551,   547,   487,   553,   521,   684,   334,
  16523. -   491,   488,   489,   340,   339,     0,     0,   413,   346,   346,
  16524. -    78,   458,   473,   220,   523,     0,   444,   450,   451,   700,
  16525. -   700,   346,   346,   447,     0,   437,   704,   333,   353,     0,
  16526. -     0,     0,     0,     0,     0,   373,     0,     0,   370,   188,
  16527. -   213,   126,     0,   172,   173,   180,   182,   538,   536,   543,
  16528. -   541,     0,   177,     0,   263,   265,   562,   473,   560,   228,
  16529. -   376,     0,    45,    95,    99,    97,   367,     0,   577,   571,
  16530. -   583,   645,   647,   572,   572,   572,     0,     0,     0,   616,
  16531. -   618,   619,   620,     0,     0,     0,   646,   572,   656,     0,
  16532. -   592,   285,   700,     0,   286,     0,   700,     0,   700,     0,
  16533. -     0,   581,   570,   569,   593,   629,   628,   572,   572,     0,
  16534. -     0,   337,   417,   418,   457,   454,   440,     0,     0,   346,
  16535. -   332,   332,   452,   455,   359,   360,   361,   358,     0,   351,
  16536. -   354,   344,     0,     0,     0,     0,   371,     0,     0,   126,
  16537. -   242,     0,   174,   544,   268,   558,   123,   363,     0,     0,
  16538. -     0,   587,     0,     0,   572,   648,     0,   651,     0,     0,
  16539. -   612,     0,   621,     0,   627,   632,     0,   281,   332,   283,
  16540. -   284,   332,     0,     0,     0,   280,   282,   582,   572,     0,
  16541. -     0,   335,   341,     0,    77,   346,   346,   465,   346,   346,
  16542. -     0,     0,   353,     0,     0,   250,   251,   252,   253,     0,
  16543. -   374,   127,   472,   137,     0,   585,   597,   588,   600,   652,
  16544. -   650,     0,   649,   144,     0,   310,     0,     0,     0,   617,
  16545. -   626,     0,     0,   594,   141,     0,   140,     0,   338,   464,
  16546. -   461,   459,   462,   453,   456,   352,   350,   220,     0,   372,
  16547. -     0,   572,     0,     0,     0,     0,   610,   700,   614,   613,
  16548. -     0,   635,     0,   633,   660,     0,   603,   607,     0,     0,
  16549. -     0,   355,   357,   138,   586,   573,   598,   148,   135,     0,
  16550. -     0,   654,     0,   653,   572,   332,     0,   637,   636,   638,
  16551. -     0,     0,   661,   662,   622,     0,     0,   460,   463,     0,
  16552. -   145,     0,     0,   601,   611,   346,   615,   634,     0,   660,
  16553. -     0,     0,     0,     0,   356,     0,     0,   136,     0,   639,
  16554. -     0,     0,   623,   663,   604,   608,   147,   146,   142,     0,
  16555. -   664,     0,     0,     0,     0,     0,     0,     0,   665,     0,
  16556. -   624,   605,   609,   143,     0,     0,   640,     0,     0,   643,
  16557. -   644,   666,   625,     0,     0,     0
  16558. +     0,     0,     0,     0,     0,     0,     0,   241,   243,   244,
  16559. +   277,   276,     0,     0,     0,     0,     0,   167,   469,     0,
  16560. +   175,   274,   223,     0,   696,   222,   259,   260,     0,   287,
  16561. +   551,   547,   556,     0,   475,   471,   471,   471,   289,   554,
  16562. +     0,   521,   291,     0,   290,   258,     0,   254,   268,   270,
  16563. +   518,     0,   255,   112,   111,   466,   385,   464,   375,     0,
  16564. +   317,     0,     0,   318,   319,   320,    33,     0,    28,    24,
  16565. +   695,   308,    26,   694,    30,   692,   122,   114,   502,   501,
  16566. +   505,     0,    17,    20,    19,   330,    53,    49,    51,    52,
  16567. +    50,    46,     0,     0,     0,     0,   344,   104,    94,   105,
  16568. +     0,    87,    90,     0,     0,     0,   366,     0,   362,    84,
  16569. +     0,     0,    66,    69,   578,   572,   471,   471,   672,   685,
  16570. +   678,   676,   551,   547,     0,   686,   471,   689,   691,   687,
  16571. +     0,   688,   471,   671,   684,   677,   675,   670,   698,   681,
  16572. +   682,     0,   513,   476,   478,   477,     0,     0,   492,     0,
  16573. +   344,   325,   488,     0,     0,     0,   491,     0,   481,   300,
  16574. +   327,   344,   330,   418,     0,   417,   409,   410,   412,     0,
  16575. +   414,   436,   432,   431,   220,   522,   471,     0,   666,   699,
  16576. +   433,   441,   446,   447,   699,   699,   434,   444,   699,     0,
  16577. +   381,   428,   427,   429,   430,   330,   701,   308,   702,     0,
  16578. +     0,     0,   343,   345,   346,   741,   740,   704,   704,   704,
  16579. +     0,     0,     0,   521,     0,     0,   522,     0,   157,     0,
  16580. +     0,     0,     0,     0,     0,   236,   235,     0,   184,   119,
  16581. +   220,   522,   221,     0,     0,   367,   383,     0,   215,   214,
  16582. +   658,   657,     0,   212,   211,   209,   210,   208,   207,   206,
  16583. +   203,   204,   205,   201,   202,   196,   197,   198,   199,   200,
  16584. +   194,   195,     0,     0,     0,     0,     0,     0,   169,   181,
  16585. +     0,     0,   168,   471,   471,     0,   471,   468,   541,     0,
  16586. +     0,     0,     0,   262,     0,   264,     0,   515,   550,   549,
  16587. +   546,   545,   695,     0,     0,   565,     0,     0,   562,   288,
  16588. +   563,   552,   471,   666,   475,   551,   547,     0,     0,   471,
  16589. +   231,     0,   517,     0,     0,     0,   386,     0,   385,   152,
  16590. +   151,   150,   149,     0,    23,     0,   393,     0,     0,    16,
  16591. +   344,    35,    39,    37,    41,     0,     0,    92,     0,    96,
  16592. +     0,   100,     0,    98,     0,   363,     0,    85,    68,     0,
  16593. +   579,     0,   573,   574,   510,   507,   550,   546,   551,   547,
  16594. +   483,     0,   471,   552,   551,   547,     0,   231,     0,   517,
  16595. +   508,     0,   680,   334,   471,   471,   471,   490,   340,   344,
  16596. +     0,     0,   420,   419,   413,     0,     0,   439,   344,     0,
  16597. +    79,     0,   330,   330,     0,   330,     0,   344,     0,   700,
  16598. +     0,     0,   341,   347,   706,   705,   707,   246,   164,     0,
  16599. +     0,   166,   190,   192,   191,   252,   253,     0,     0,     0,
  16600. +     0,   238,     0,     0,     0,     0,   185,     0,   239,   242,
  16601. +   179,   178,   171,     0,   170,   183,     0,     0,   538,   536,
  16602. +     0,   539,   475,   176,     0,     0,   265,     0,     0,   548,
  16603. +   544,   555,   471,   564,   553,   558,     0,   560,     0,   551,
  16604. +   547,   519,   520,     0,   257,   467,   465,   377,     0,    25,
  16605. +    29,   693,     0,     0,    44,    93,    91,     0,     0,     0,
  16606. +     0,   364,   360,     0,     0,   220,   522,   583,   595,   598,
  16607. +     0,   571,     0,     0,     0,     0,     0,     0,   221,   629,
  16608. +     0,   654,     0,   590,     0,     0,   308,     0,   567,   588,
  16609. +   594,   566,   589,   630,     0,   601,   605,   575,   550,   546,
  16610. +   485,   552,   520,   683,   332,   489,   486,   487,   338,   337,
  16611. +     0,     0,   411,   344,   344,    78,   456,   471,   220,   522,
  16612. +     0,   442,   448,   449,   699,   699,   344,   344,   445,     0,
  16613. +   435,   703,   331,   351,     0,     0,     0,     0,     0,     0,
  16614. +   371,     0,     0,   368,   188,   213,   126,     0,   172,   173,
  16615. +   180,   182,   537,   535,   542,   540,     0,   177,     0,   261,
  16616. +   263,   561,   471,   559,   374,     0,    45,    95,    99,    97,
  16617. +   365,     0,   576,   570,   582,   644,   646,   571,   571,   571,
  16618. +     0,     0,     0,   615,   617,   618,   619,     0,     0,     0,
  16619. +   645,   571,   655,     0,   591,   283,   699,     0,   284,     0,
  16620. +   699,     0,   699,     0,     0,   580,   569,   568,   592,   628,
  16621. +   627,   571,   571,     0,     0,   335,   415,   416,   455,   452,
  16622. +   438,     0,     0,   344,   330,   330,   450,   453,   357,   358,
  16623. +   359,   356,     0,   349,   352,   342,     0,     0,     0,     0,
  16624. +   369,     0,     0,   126,   240,     0,   174,   543,   266,   557,
  16625. +   123,   361,     0,     0,     0,   586,     0,     0,   571,   647,
  16626. +     0,   650,     0,     0,   611,     0,   620,     0,   626,   631,
  16627. +     0,   279,   330,   281,   282,   330,     0,     0,     0,   278,
  16628. +   280,   581,   571,     0,     0,   333,   339,     0,    77,   344,
  16629. +   344,   463,   344,   344,     0,     0,   351,     0,     0,   248,
  16630. +   249,   250,   251,     0,   372,   127,   470,   137,     0,   584,
  16631. +   596,   587,   599,   651,   649,     0,   648,   144,     0,   308,
  16632. +     0,     0,     0,   616,   625,     0,     0,   593,   141,     0,
  16633. +   140,     0,   336,   462,   459,   457,   460,   451,   454,   350,
  16634. +   348,   220,     0,   370,     0,   571,     0,     0,     0,     0,
  16635. +   609,   699,   613,   612,     0,   634,     0,   632,   659,     0,
  16636. +   602,   606,     0,     0,     0,   353,   355,   138,   585,   572,
  16637. +   597,   148,   135,     0,     0,   653,     0,   652,   571,   330,
  16638. +     0,   636,   635,   637,     0,     0,   660,   661,   621,     0,
  16639. +     0,   458,   461,     0,   145,     0,     0,   600,   610,   344,
  16640. +   614,   633,     0,   659,     0,     0,     0,     0,   354,     0,
  16641. +     0,   136,     0,   638,     0,     0,   622,   662,   603,   607,
  16642. +   147,   146,   142,     0,   663,     0,     0,     0,     0,     0,
  16643. +     0,     0,   664,     0,   623,   604,   608,   143,     0,     0,
  16644. +   639,     0,     0,   642,   643,   665,   624,     0,     0,     0
  16645.  };
  16646.  
  16647. -static const short yydefgoto[] = {  1354,
  16648. -     1,     2,   120,   568,   987,     3,     4,    31,    32,    33,
  16649. -   300,   551,   552,   553,    34,    91,    35,   577,   579,   578,
  16650. -   580,   576,    36,    37,    38,   415,   129,   130,   131,   341,
  16651. -   586,   587,   539,   588,   177,    39,    40,    41,   135,   262,
  16652. -   263,   303,   813,   304,  1151,   264,   988,  1281,  1216,  1236,
  16653. -  1237,  1336,  1277,   293,   793,   265,   448,   500,   757,   266,
  16654. -   267,   268,   294,   270,   510,   313,    43,   271,   460,  1052,
  16655. -   272,   273,   274,   275,   132,   276,   989,   405,   520,   777,
  16656. -   990,    45,   162,   991,    47,   163,   443,   164,   144,   156,
  16657. -    49,   635,   145,  1120,   406,  1194,   157,  1121,    50,  1040,
  16658. -   687,   688,   689,  1139,  1140,  1141,   969,   720,   721,    51,
  16659. -   543,   289,   912,   802,    52,    53,    54,    55,   181,   182,
  16660. -    56,    57,    58,   411,   651,   652,   653,   654,   184,   418,
  16661. -   419,   420,   421,   665,   671,   666,  1027,   667,   668,  1028,
  16662. -  1029,   540,   541,   501,   783,    59,   374,   375,   146,    60,
  16663. -    61,   147,   148,   114,    63,   511,   281,   282,   283,    65,
  16664. -   284,    67,    68,   180,    69,   285,   762,   763,   778,   523,
  16665. -   993,   994,  1161,   836,   837,   838,   350,   995,   996,  1084,
  16666. -  1252,  1163,   997,   998,  1189,  1085,  1253,  1086,  1254,  1118,
  16667. -  1296,  1334,  1119,  1297,  1335,  1285,  1229,  1287,  1172,   999,
  16668. -  1232,  1290,  1264,  1308,  1330,  1227,  1338,  1000,  1001,  1002,
  16669. -  1100,   727,  1292,  1293,  1294,  1340,   367,   779,   369,   370,
  16670. -   371,   558,   372,   107,   625,  1179,   683,   684,   438,    71,
  16671. +static const short yydefgoto[] = {  1348,
  16672. +     1,     2,   119,   564,   982,     3,     4,    31,    32,    33,
  16673. +   299,   548,   549,   550,    34,    91,    35,   573,   575,   574,
  16674. +   576,   572,    36,    37,    38,   412,   128,   129,   130,   339,
  16675. +   582,   583,   536,   584,   176,    39,    40,    41,   134,   261,
  16676. +   262,   302,   809,   303,  1145,   263,   983,  1275,  1210,  1230,
  16677. +  1231,  1330,  1271,   292,   789,   264,   445,   497,   753,   265,
  16678. +   266,   267,   293,   269,   507,   312,    43,   270,   457,  1047,
  16679. +   271,   272,   273,   274,   131,   275,   984,   402,   517,   773,
  16680. +   985,    45,   161,   986,    47,   162,   440,   163,   143,   155,
  16681. +    49,   631,   144,  1114,   403,  1188,   156,  1115,    50,  1035,
  16682. +   683,   684,   685,  1133,  1134,  1135,   964,   716,   717,    51,
  16683. +   540,   288,   906,   798,    52,    53,    54,    55,   180,   181,
  16684. +    56,    57,    58,   408,   647,   648,   649,   650,   183,   415,
  16685. +   416,   417,   418,   661,   667,   662,  1022,   663,   664,  1023,
  16686. +  1024,   537,   538,   498,   779,    59,   372,   373,   145,    60,
  16687. +    61,   146,   147,   113,    63,   508,   280,   281,   282,    65,
  16688. +   283,    67,    68,   179,    69,   284,   758,   759,   770,   520,
  16689. +   988,   989,  1155,   832,   833,   834,   348,   990,   991,  1078,
  16690. +  1246,  1157,   992,   993,  1183,  1079,  1247,  1080,  1248,  1112,
  16691. +  1290,  1328,  1113,  1291,  1329,  1279,  1223,  1281,  1166,   994,
  16692. +  1226,  1284,  1258,  1302,  1324,  1221,  1332,   995,   996,   997,
  16693. +  1094,   723,  1286,  1287,  1288,  1334,   365,   775,   367,   368,
  16694. +   369,   555,   370,   107,   621,  1173,   679,   680,   435,    71,
  16695.      72
  16696.  };
  16697.  
  16698. -static const short yypact[] = {    64,
  16699. -    80,-32768,-32768,  2131,-32768,   130,-32768,   283,    48,-32768,
  16700. --32768,   556,-32768,-32768,    66,    87,-32768,   206,-32768,  2650,
  16701. --32768,   210,-32768,  1299,  1299,-32768,  1901,-32768,-32768,   292,
  16702. --32768,   333,  3137,-32768,-32768,-32768,-32768,   573,   353,   368,
  16703. --32768,-32768,   166,  1701,-32768,  2829,-32768,  1033,   294,-32768,
  16704. --32768,   540,-32768,-32768,-32768,-32768,-32768,   396,  1486,-32768,
  16705. --32768,   591,-32768,-32768,-32768,    82,-32768,-32768,-32768,   214,
  16706. -  6712,-32768,-32768,-32768,-32768,  8620,  2499,-32768,   283,   210,
  16707. -   355,   414,   368,-32768,   214,-32768,   214,  8620,  8620,-32768,
  16708. -   512,-32768,   210,-32768,  4042,  3298,     1,   214,  8446,   283,
  16709. -  2225,-32768,   361,   267,  2225,-32768,   262,  2706,  2706,  1901,
  16710. -   383,   435,   166,   453,   495,   498,-32768,   571,   446,  2532,
  16711. -   224,  4042,  3192,   680,   723,   521,   617,-32768,    55,    16,
  16712. -   143,   143,-32768,-32768,   546,-32768,  6059,   532,-32768,  3255,
  16713. -  3255,  4407,   641,   569,-32768,-32768,   255,-32768,-32768,    82,
  16714. --32768,-32768,-32768,-32768,  1033,   669,-32768,   998,-32768,-32768,
  16715. --32768,  1070,   673,-32768,-32768,  4042,-32768,-32768,-32768,-32768,
  16716. --32768,-32768,-32768,-32768,-32768,-32768,-32768,   368,   775,-32768,
  16717. -   609,   609,-32768,  2064,-32768,   673,-32768,   604,   970,-32768,
  16718. --32768,-32768,-32768,  3851,-32768,    50,-32768,   605,   633,-32768,
  16719. --32768,-32768,-32768,   640,-32768,-32768,-32768,-32768,-32768,-32768,
  16720. +static const short yypact[] = {   203,
  16721. +   236,-32768,-32768,  1874,-32768,    85,-32768,    55,   300,-32768,
  16722. +-32768,   590,-32768,-32768,   -23,   252,-32768,   365,-32768,  1493,
  16723. +-32768,   355,-32768,   963,   963,-32768,  2214,-32768,-32768,   349,
  16724. +-32768,   429,  3939,-32768,-32768,-32768,-32768,   279,   435,   443,
  16725. +-32768,-32768,   396,  1052,-32768,  9215,-32768,   704,    30,-32768,
  16726. +-32768,   698,-32768,-32768,-32768,-32768,-32768,   488,  1610,-32768,
  16727. +-32768,   410,-32768,-32768,-32768,   397,-32768,-32768,-32768,    89,
  16728. +  6309,-32768,-32768,-32768,-32768,  8124,  2133,-32768,    55,   355,
  16729. +   461,   515,   443,-32768,    89,-32768,    89,  8124,  8124,-32768,
  16730. +   363,-32768,   355,-32768,  3239,  4205,   230,    89,  7950,    55,
  16731. +  2347,-32768,   484,   103,  2347,-32768,    92,  2356,  2356,   479,
  16732. +   501,   396,   514,   519,   540,-32768,   629,   555,  2912,   144,
  16733. +  3239,  9396,   593,   706,   572,   666,-32768,   149,   306,    57,
  16734. +    57,-32768,-32768,   575,-32768,  4662,   589,-32768,  3833,  3833,
  16735. +  3542,  1266,   393,-32768,-32768,   408,-32768,-32768,   397,-32768,
  16736. +-32768,-32768,-32768,   704,   536,-32768,  1285,-32768,-32768,-32768,
  16737. +   907,   654,-32768,-32768,  3239,-32768,-32768,-32768,-32768,-32768,
  16738. +-32768,-32768,-32768,-32768,-32768,-32768,   443,   719,-32768,   617,
  16739. +   617,-32768,  2447,-32768,   654,-32768,   608,   875,-32768,-32768,
  16740. +-32768,-32768,  4014,-32768,    56,-32768,   609,   647,-32768,-32768,
  16741. +-32768,-32768,   683,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  16742.  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  16743. --32768,-32768,-32768,-32768,-32768,-32768,   601,-32768,-32768,   673,
  16744. -  1486,   654,   627,-32768,-32768,  9561,  9644,   659,   664,-32768,
  16745. --32768,-32768,-32768,-32768,-32768,   675,   689,   696,   698,   701,
  16746. -   262,  9312,-32768,-32768,  9312,-32768,-32768,  9312,  6796,  3961,
  16747. --32768,   422,-32768,  9312,-32768,  8707,-32768,-32768,  9780,-32768,
  16748. -   845,  1829,  8790,-32768,   781,   434,-32768,   126,  1601,  4144,
  16749. --32768,   160,-32768,   475,   813,  4042,     1,-32768,   262,   690,
  16750. --32768,   721,   743,  9688,   726,   728,   734,   800,-32768,  2499,
  16751. --32768,   609,-32768,-32768,-32768,   478,-32768,   125,-32768,-32768,
  16752. --32768,-32768,-32768,  2225,-32768,-32768,  2225,-32768,   758,-32768,
  16753. --32768,  3851,    47,-32768,   729,  2499,-32768,-32768,-32768,-32768,
  16754. -   521,   708,-32768,-32768,-32768,-32768,-32768,-32768,   712,-32768,
  16755. -   249,-32768,  6886,  8877,-32768,   143,   143,   803,-32768,-32768,
  16756. --32768,-32768,-32768,   855,   765,-32768,-32768,   743,   767,  9688,
  16757. -   296,  2466,  3192,  2466,  3043,  3464,   772,-32768,   100,  3351,
  16758. -   807,   819,-32768,   776,  8877,  3862,-32768,  3862,-32768,  4280,
  16759. -  4280,  4407,   785,-32768,-32768,-32768,   970,  4042,-32768,-32768,
  16760. -  6161,   792,-32768,  4311,  1070,  1033,  4042,-32768,-32768,-32768,
  16761. -   970,-32768,-32768,-32768,   521,-32768,-32768,-32768,-32768,   905,
  16762. --32768,-32768,-32768,  8877,   447,  1155,  3724,    60,  1544,-32768,
  16763. -   252,   521,   673,  2142,   802,   867,-32768,-32768,-32768,   796,
  16764. -   798,-32768,-32768,-32768,-32768,   164,-32768,-32768,  8877,   627,
  16765. -  6796,-32768,   229,  6796,-32768,  8877,  8964,  9312,  8620,  2142,
  16766. -  2142,  2142,  2142,-32768,-32768,-32768,-32768,   805,   809,   803,
  16767. -   810,-32768,  8620,-32768,-32768,  6623,  6796,-32768,  8877,  8877,
  16768. -  6976,  8877,  8877,  8877,  8877,  8877,  8877,  8877,  8877,  8877,
  16769. -  8877,  8877,  8877,  8877,  8877,  8877,  8877,  8877,  8877,  8877,
  16770. --32768,-32768,-32768,-32768,-32768,  8877,  8877,  8877,  8620,  1393,
  16771. -   564,   670,  7615,-32768,-32768,   283,   865,   912,-32768,   237,
  16772. -   244,   615,-32768,  1080,  1080,-32768,  3796,   814,   837,   884,
  16773. --32768,-32768,   490,  8090,   114,-32768,   188,-32768,-32768,  8877,
  16774. --32768,-32768,-32768,-32768,   626,-32768,-32768,-32768,   877,   874,
  16775. --32768,-32768,   262,-32768,  7438,  7528,-32768,-32768,-32768,-32768,
  16776. -   606,   879,-32768,-32768,  3594,   540,-32768,-32768,   887,-32768,
  16777. --32768,-32768,-32768,   844,-32768,   891,-32768,-32768,-32768,   712,
  16778. --32768,-32768,-32768,-32768,-32768,-32768,   893,   896,   897,   903,
  16779. -   867,-32768,-32768,   210,  8877,   906,-32768,   280,   420,   436,
  16780. --32768,  6263,  9757,-32768,   849,   143,-32768,-32768,-32768,    24,
  16781. --32768,-32768,-32768,-32768,-32768,-32768,   817,   817,  4802,-32768,
  16782. --32768,-32768,-32768,-32768,  8181,-32768,-32768,-32768,-32768,-32768,
  16783. --32768,-32768,-32768,-32768,   902,  6886,-32768,-32768,-32768,-32768,
  16784. -  3862,  3862,-32768,  4311,   867,-32768,   855,   861,   863,   866,
  16785. --32768,   872,-32768,  1070,-32768,   867,   712,-32768,   883,-32768,
  16786. -   923,-32768,-32768,   939,-32768,  9757,-32768,-32768,   922,    18,
  16787. --32768,  8877,  2818,   521,   930,-32768,-32768,-32768,   510,   611,
  16788. -   934,-32768,   521,   937,-32768,-32768,-32768,-32768,-32768,   748,
  16789. --32768,  3086,-32768,   281,   571,   916,   947,   867,-32768,-32768,
  16790. --32768,   282,   282,   282,   904,   908,  9051,   884,   913,   915,
  16791. -   192,   917,-32768,   918,   920,   938,   944,   948,   957,-32768,
  16792. --32768,   932,-32768,-32768,   975,   421,   338,  8877,   976,-32768,
  16793. -   987,   941,  9757,  9757,-32768,-32768,   988,  4588,  9818,  4862,
  16794. -  4703,  4168,  4535,  3669,  1937,  1937,  1937,  1334,  1334,  1050,
  16795. -  1050,   713,   713,   713,-32768,-32768,   955,   954,   959,   958,
  16796. -   961,  2142,   564,-32768,  6886,  8877,-32768,-32768,-32768,  8877,
  16797. --32768,-32768,   980,  9312,   967,   981,  1030,-32768,  8877,-32768,
  16798. -  8877,-32768,  1350,-32768,  1350,-32768,    71,   977,   978,-32768,
  16799. -   973,  2142,   855,-32768,   855,  1728,-32768,  1109,   983,  8272,
  16800. -  8272,  5855,   979,  8707,   383,   984,   498,   813,   989,  8877,
  16801. -   262,   982,   874,-32768,  9757,-32768,  9757,  2499,-32768,  2761,
  16802. -   662,  6886,   396,-32768,   867,-32768,-32768,-32768,-32768,   708,
  16803. -   994,-32768,   249,-32768,  8877,-32768,  8877,-32768,  8877,-32768,
  16804. -   116,-32768,-32768,   262,-32768,  5585,  1049,-32768,   855,   855,
  16805. -  1260,  1260,  1918,  1918,  4802,-32768,    82,-32768,  2412,  8359,
  16806. -  8359,  5957,   240,  1005,   341,   855,  6886,-32768,  1031,-32768,
  16807. --32768,-32768,-32768,  1051,   867,  8620,   905,-32768,-32768,-32768,
  16808. -  8877,  8877,   152,  4929,  1006,-32768,   401,   712,   712,  3568,
  16809. -   755,  2290,   867,  2142,-32768,    54,  1023,-32768,-32768,-32768,
  16810. --32768,-32768,-32768,-32768,  9395,  9395,  7066,-32768,-32768,-32768,
  16811. --32768,-32768,-32768,  1024,  1029,  1032,  1034,-32768,  4688,  6886,
  16812. -  6353,  1020,-32768,  8877,-32768,-32768,-32768,-32768,   474,  1035,
  16813. --32768,-32768,  1039,    44,   181,   181,  1027,   181,-32768,-32768,
  16814. -  9312,  1128,-32768,  1044,  1046,-32768,-32768,-32768,-32768,-32768,
  16815. --32768,   855,  1059,-32768,  1047,  1062,-32768,-32768,   452,-32768,
  16816. -  9757,-32768,-32768,  1063,-32768,-32768,-32768,  2064,   708,-32768,
  16817. --32768,-32768,  1068,  1071,  1073,  6443,-32768,-32768,   745,   289,
  16818. -  1075,   575,-32768,-32768,-32768,  1065,-32768,  8877,  1116,  1121,
  16819. -  1122,  8533,    67,   572,-32768,  1129,  1175,  1131,-32768,  2565,
  16820. -  4428,  2918,  5022,-32768,-32768,  1170,-32768,-32768,-32768,  7718,
  16821. --32768,-32768,-32768,  1260,  1260,-32768,  2412,  1408,-32768,-32768,
  16822. -   855,   855,   855,-32768,  1132,  1089,  1093,-32768,  4929,  4929,
  16823. --32768,-32768,-32768,  1138,   624,  8877,-32768,-32768,-32768,   521,
  16824. -   521,   867,   867,-32768,  2406,-32768,-32768,-32768,   583,  6886,
  16825. -  8877,  8877,  8877,  8877,  6886,-32768,  8877,  1140,-32768,-32768,
  16826. -  9801,   546,  8877,-32768,   474,-32768,-32768,-32768,-32768,-32768,
  16827. --32768,  1100,-32768,  1163,-32768,-32768,   855,-32768,-32768,-32768,
  16828. --32768,    73,-32768,-32768,-32768,-32768,-32768,   262,-32768,-32768,
  16829. --32768,-32768,-32768,-32768,-32768,   803,  6533,  1123,  4518,-32768,
  16830. --32768,-32768,-32768,  1153,  8877,  1158,-32768,-32768,-32768,  1130,
  16831. --32768,-32768,   191,   763,-32768,   788,   521,  9138,   427,   797,
  16832. -   307,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  6886,
  16833. -  6886,-32768,-32768,-32768,-32768,-32768,   152,  8877,  8877,  4929,
  16834. -   712,   712,  1159,  1161,-32768,-32768,-32768,-32768,   315,-32768,
  16835. -  1133,-32768,  1120,  1126,  1127,  1137,-32768,  9711,  6886,   546,
  16836. --32768,  1119,-32768,-32768,-32768,   855,-32768,-32768,   462,   462,
  16837. -  8000,-32768,  1210,  1184,  1139,-32768,  1189,-32768,  8620,  8877,
  16838. --32768,  7820,-32768,  1190,-32768,-32768,   571,-32768,   712,-32768,
  16839. --32768,   712,  9478,  9478,  7156,-32768,-32768,-32768,   803,  7246,
  16840. -  7246,-32768,-32768,  6886,-32768,  4929,  4929,-32768,   867,   867,
  16841. -  6886,  6886,   583,  1146,  9225,-32768,-32768,-32768,-32768,  6886,
  16842. --32768,-32768,-32768,-32768,  8620,-32768,-32768,-32768,-32768,-32768,
  16843. --32768,  5675,-32768,-32768,  1148,   416,  4042,  9734,  7820,-32768,
  16844. --32768,  5141,    51,-32768,-32768,  1198,-32768,  1199,-32768,-32768,
  16845. --32768,  1174,  1200,-32768,-32768,-32768,-32768,   369,  1154,-32768,
  16846. -  1160,   803,  7910,   527,   370,  5273,-32768,   521,-32768,-32768,
  16847. -   379,-32768,  5377,-32768,  1248,  1204,-32768,-32768,  6886,  6886,
  16848. -  8877,-32768,-32768,-32768,-32768,    25,-32768,-32768,-32768,  8877,
  16849. -  1205,-32768,  1213,-32768,   803,   712,  7820,-32768,-32768,-32768,
  16850. -  1178,   271,  1216,-32768,-32768,  7336,  7336,-32768,-32768,  1171,
  16851. --32768,  5765,  1172,-32768,-32768,   867,-32768,  1181,  8877,  1248,
  16852. -  1222,  1248,  1177,  1187,-32768,   397,  5481,-32768,  1233,-32768,
  16853. -  1192,   365,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1208,
  16854. --32768,  1271,  1236,  7910,  7910,  6886,  3413,   803,-32768,   410,
  16855. --32768,-32768,-32768,-32768,  1195,  1197,-32768,  1296,  1251,-32768,
  16856. --32768,-32768,-32768,  1308,  1309,-32768
  16857. +-32768,-32768,-32768,-32768,-32768,   601,-32768,-32768,   654,  1610,
  16858. +   351,   657,-32768,-32768,  3117,  9065,   660,   662,-32768,-32768,
  16859. +-32768,-32768,-32768,-32768,   665,   690,   692,   699,   703,    92,
  16860. +  8816,-32768,-32768,  8816,-32768,-32768,  8816,  6393,  9148,-32768,
  16861. +    29,-32768,  8816,-32768,  8211,-32768,-32768,  9444,-32768,  1334,
  16862. +  2712,  8294,-32768,   767,   557,-32768,   160,  2819,  9439,-32768,
  16863. +   266,-32768,   579,   809,  3239,   230,-32768,    92,   685,-32768,
  16864. +   684,   738,  9497,   693,   697,   701,   808,-32768,  2133,-32768,
  16865. +   617,-32768,-32768,-32768,   154,-32768,   139,-32768,-32768,-32768,
  16866. +-32768,-32768,  2347,-32768,-32768,  2347,-32768,-32768,-32768,  4014,
  16867. +    50,-32768,   711,  2133,-32768,-32768,-32768,-32768,   572,   766,
  16868. +-32768,-32768,-32768,-32768,-32768,-32768,   656,-32768,   254,-32768,
  16869. +  6483,  8381,-32768,    57,    57,   765,-32768,-32768,-32768,-32768,
  16870. +-32768,   818,   730,-32768,-32768,   738,   735,  9497,   328,  1775,
  16871. +  9396,  1775,  4904,  4548,   737,-32768,    72,  9289,   763,   787,
  16872. +-32768,   746,  8381,  4250,-32768,  4250,-32768,  4314,  4314,   753,
  16873. +-32768,-32768,-32768,   875,  3239,-32768,-32768,  5854,   752,-32768,
  16874. +  4433,   907,   704,  3239,-32768,-32768,-32768,   875,-32768,-32768,
  16875. +-32768,   572,-32768,-32768,-32768,-32768,  1191,-32768,-32768,-32768,
  16876. +  8381,   156,  1389,  9306,    54,  2311,-32768,   167,   572,   654,
  16877. +  2569,   771,   831,-32768,-32768,-32768,   773,   777,-32768,-32768,
  16878. +-32768,-32768,   169,-32768,-32768,  8381,   657,  6393,-32768,   381,
  16879. +  6393,-32768,  8381,  8468,  8816,  8124,  2569,  2569,  2569,  2569,
  16880. +-32768,-32768,-32768,-32768,   782,   784,   765,   793,-32768,  8124,
  16881. +-32768,-32768,  3487,  6393,-32768,  8381,  8381,  3006,  8381,  8381,
  16882. +  8381,  8381,  8381,  8381,  8381,  8381,  8381,  8381,  8381,  8381,
  16883. +  8381,  8381,  8381,  8381,  8381,  8381,  8381,-32768,-32768,-32768,
  16884. +-32768,-32768,  8381,  8381,  8381,  8124,  3398,   497,   109,  7032,
  16885. +-32768,-32768,    55,   848,   896,-32768,   387,   415,   592,-32768,
  16886. +   388,   388,-32768,  3838,   798,   817,   864,-32768,-32768,   412,
  16887. +  7507,  1099,-32768,   251,-32768,-32768,  8381,-32768,-32768,-32768,
  16888. +-32768,   597,-32768,-32768,-32768,   851,   855,-32768,-32768,    92,
  16889. +-32768,  6855,  6945,-32768,-32768,-32768,-32768,   419,   859,-32768,
  16890. +-32768,  9200,   698,-32768,-32768,   862,-32768,-32768,-32768,-32768,
  16891. +-32768,   865,-32768,-32768,-32768,   656,-32768,-32768,-32768,-32768,
  16892. +-32768,-32768,   866,   868,   869,   870,   831,-32768,-32768,   355,
  16893. +  8381,   877,-32768,   434,   438,   462,-32768,  5956,  9590,-32768,
  16894. +   836,    57,-32768,-32768,-32768,    20,-32768,-32768,-32768,-32768,
  16895. +-32768,-32768,  1506,  1506,  3333,-32768,-32768,-32768,-32768,-32768,
  16896. +  7598,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  16897. +   887,  6483,-32768,-32768,-32768,-32768,  4250,  4250,-32768,  4433,
  16898. +   831,-32768,   818,   849,   856,   861,-32768,   863,-32768,   907,
  16899. +-32768,   831,   656,-32768,   881,-32768,   899,-32768,-32768,  1243,
  16900. +-32768,  9590,-32768,-32768,   912,   146,-32768,  8381,  2808,   572,
  16901. +   921,-32768,-32768,-32768,   368,   407,   922,-32768,   572,   920,
  16902. +-32768,-32768,-32768,-32768,-32768,   551,-32768,  4154,-32768,   187,
  16903. +   629,   897,   926,   831,-32768,-32768,-32768,   505,   505,   505,
  16904. +   885,   886,  8555,   864,   895,   900,   248,   901,-32768,   906,
  16905. +   909,   919,   942,   943,   945,-32768,-32768,   918,-32768,-32768,
  16906. +   962,   553,   136,  8381,   969,-32768,   968,   928,  9590,  9590,
  16907. +-32768,-32768,   973,  9629,  4583,  9645,  9660,  5903,  6801,  3406,
  16908. +  1324,  1324,  1324,  1664,  1664,   814,   814,   640,   640,   640,
  16909. +-32768,-32768,   932,   934,   940,   935,   946,  2569,   497,-32768,
  16910. +  6483,  8381,-32768,-32768,-32768,  8381,-32768,-32768,   955,  8816,
  16911. +   944,   964,  1008,-32768,  8381,-32768,  8381,-32768,   890,-32768,
  16912. +   890,-32768,    65,   951,   952,-32768,   953,  2569,   818,-32768,
  16913. +   818,  2046,-32768,  1065,   957,  7689,  7689,  4811,   966,  8211,
  16914. +   479,   972,   540,   809,   974,  8381,    92,   961,   855,-32768,
  16915. +  9590,-32768,  9590,  2133,-32768,   664,   520,  6483,   488,-32768,
  16916. +   831,-32768,-32768,-32768,-32768,   766,   978,-32768,   254,-32768,
  16917. +  8381,-32768,  8381,-32768,  8381,-32768,     9,-32768,-32768,    92,
  16918. +-32768,  5584,  1032,-32768,   818,   818,  2757,  2757,  3282,  3282,
  16919. +-32768,   397,-32768,  3954,  7776,  7776,  5016,   174,   979,   244,
  16920. +   818,  6483,-32768,  1030,-32768,-32768,-32768,-32768,  1037,   831,
  16921. +  8124,  1191,-32768,-32768,-32768,  8381,  8381,    74,  9521,   995,
  16922. +-32768,  2416,   656,   656,  3185,   603,  3228,   831,  2569,-32768,
  16923. +    52,  1011,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  8899,
  16924. +  8899,-32768,-32768,-32768,-32768,-32768,-32768,  1013,  1014,  1019,
  16925. +  1022,-32768,  9472,  6483,  6046,  1009,-32768,  8381,-32768,-32768,
  16926. +-32768,-32768,   143,  1012,-32768,-32768,  1017,    75,   278,   278,
  16927. +  1006,   278,-32768,-32768,  8816,  1107,-32768,  1018,  1020,-32768,
  16928. +-32768,-32768,-32768,-32768,-32768,   818,  1023,-32768,  1010,  7863,
  16929. +  7863,-32768,-32768,   584,-32768,  9590,-32768,-32768,  1021,-32768,
  16930. +-32768,-32768,  2447,   766,-32768,-32768,-32768,  1024,  1026,  1036,
  16931. +  6136,-32768,-32768,   668,   231,  1061,   567,-32768,-32768,-32768,
  16932. +  1046,-32768,  8381,  1079,  1085,  1088,  8037,    73,   476,-32768,
  16933. +  1093,  1139,  1094,-32768,  1971,  9379,  2582,  3725,-32768,-32768,
  16934. +  1135,-32768,-32768,-32768,  7135,-32768,-32768,-32768,  2757,  2757,
  16935. +-32768,  3954,  1989,-32768,-32768,   818,   818,   818,-32768,  1095,
  16936. +  1053,  1054,-32768,  9521,  9521,-32768,-32768,-32768,  1103,   661,
  16937. +  8381,-32768,-32768,-32768,   572,   572,   831,   831,-32768,  2607,
  16938. +-32768,-32768,-32768,   801,  6483,  8381,  8381,  8381,  8381,  6483,
  16939. +-32768,  8381,  1104,-32768,-32768,  9611,   575,  8381,-32768,   143,
  16940. +-32768,-32768,-32768,-32768,-32768,-32768,  1062,-32768,  1122,-32768,
  16941. +-32768,   818,-32768,-32768,-32768,    66,-32768,-32768,-32768,-32768,
  16942. +-32768,    92,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   765,
  16943. +  6226,  1082,  5075,-32768,-32768,-32768,-32768,  1115,  8381,  1121,
  16944. +-32768,-32768,-32768,  1090,-32768,-32768,   238,   672,-32768,   772,
  16945. +   572,  8642,   459,   774,   258,-32768,-32768,-32768,-32768,-32768,
  16946. +-32768,-32768,-32768,  6483,  6483,-32768,-32768,-32768,-32768,-32768,
  16947. +    74,  8381,  8381,  9521,   656,   656,  1124,  1126,-32768,-32768,
  16948. +-32768,-32768,   269,-32768,  1091,-32768,  1084,  1087,  1097,  1098,
  16949. +-32768,  9544,  6483,   575,-32768,  1089,-32768,-32768,-32768,   818,
  16950. +-32768,-32768,   509,   509,  7417,-32768,  1175,  1137,  1100,-32768,
  16951. +  1141,-32768,  8124,  8381,-32768,  7237,-32768,  1146,-32768,-32768,
  16952. +   629,-32768,   656,-32768,-32768,   656,  8982,  8982,  6573,-32768,
  16953. +-32768,-32768,   765,  6663,  6663,-32768,-32768,  6483,-32768,  9521,
  16954. +  9521,-32768,   831,   831,  6483,  6483,   801,  1102,  8729,-32768,
  16955. +-32768,-32768,-32768,  6483,-32768,-32768,-32768,-32768,  8124,-32768,
  16956. +-32768,-32768,-32768,-32768,-32768,  5674,-32768,-32768,  1109,   234,
  16957. +  3239,  9567,  7237,-32768,-32768,  5168,    48,-32768,-32768,  1149,
  16958. +-32768,  1150,-32768,-32768,-32768,  1160,  1163,-32768,-32768,-32768,
  16959. +-32768,   282,  1123,-32768,  1127,   765,  7327,   518,   295,  5272,
  16960. +-32768,   572,-32768,-32768,   296,-32768,  5376,-32768,  1214,  1168,
  16961. +-32768,-32768,  6483,  6483,  8381,-32768,-32768,-32768,-32768,    37,
  16962. +-32768,-32768,-32768,  8381,  1176,-32768,  1177,-32768,   765,   656,
  16963. +  7237,-32768,-32768,-32768,  1147,   201,  1181,-32768,-32768,  6753,
  16964. +  6753,-32768,-32768,  1143,-32768,  5764,  1148,-32768,-32768,   831,
  16965. +-32768,  1158,  8381,  1214,  1183,  1214,  1151,  1152,-32768,   317,
  16966. +  5480,-32768,  1198,-32768,  1156,   246,-32768,-32768,-32768,-32768,
  16967. +-32768,-32768,-32768,  1153,-32768,  1254,  1208,  7327,  7327,  6483,
  16968. +  1355,   765,-32768,   353,-32768,-32768,-32768,-32768,  1167,  1170,
  16969. +-32768,  1271,  1219,-32768,-32768,-32768,-32768,  1281,  1282,-32768
  16970.  };
  16971.  
  16972.  static const short yypgoto[] = {-32768,
  16973. -  1191,-32768,-32768,   986,     7,  1310,-32768,-32768,-32768,-32768,
  16974. --32768,-32768,-32768,   507,-32768,-32768,-32768,-32768,-32768,-32768,
  16975. --32768,  -770,  1196,  1207,-32768,-32768,-32768,-32768,  1201,-32768,
  16976. --32768,   496,   135,-32768,-32768,-32768,  2838,   -25,-32768,  1221,
  16977. -   888,  -999,-32768,   -88,   178,-32768,   895,-32768,   169,   139,
  16978. - -1101,-32768,  -524,  1474,   -99,   619,-32768,-32768,  -714,  3947,
  16979. -    43,  -240,  2252,  2872,   825,  1176,   432,-32768,-32768,-32768,
  16980. --32768,  -273,-32768,  -116,   -94,-32768,   266,    17,  -276,   132,
  16981. -    75,  -106,  -109,    -3,  1594,    27,  1371,  -118,  -752,   364,
  16982. --32768,   -82,-32768,-32768,   265,-32768,-32768,-32768,-32768,-32768,
  16983. -   327,-32768,   677,-32768,   155,-32768,-32768,   730,   769,    74,
  16984. --32768,-32768,-32768,   560,  -272,    13,  1335,  1336,-32768,-32768,
  16985. --32768,-32768,-32768,  -141,-32768,   500,   716,-32768,   559,   418,
  16986. -   497,  -414,-32768,-32768,-32768,-32768,-32768,-32768,   960,-32768,
  16987. -   501,   835,   582,   889,  2241,  1820,  -368,-32768,  3695,   -55,
  16988. -    10,-32768,  4252,   -90,   717,-32768,  3290,-32768,-32768,  3834,
  16989. -    -4,   245,  -328,  1372,  3416,   871,  -214,-32768,  4134,-32768,
  16990. - -1157,  -942,  -343,   117,-32768,   553,   -97,  -122,-32768,-32768,
  16991. --32768, -1137,  -860, -1112,-32768,-32768,-32768,-32768,-32768,-32768,
  16992. +  1165,-32768,-32768,   958,     7,  1283,-32768,-32768,-32768,-32768,
  16993. +-32768,-32768,-32768,   486,-32768,-32768,-32768,-32768,-32768,-32768,
  16994. +-32768,  -773,  1169,  1174,-32768,-32768,-32768,-32768,  1166,-32768,
  16995. +-32768,   478,   126,-32768,-32768,-32768,  4325,   -30,-32768,  1204,
  16996. +   844,  -998,-32768,   -96,   162,-32768,   171,-32768,   153,   124,
  16997. +  -980,-32768,  -480,   242,   564,   630,-32768,-32768,  -722,  3685,
  16998. +  1316,  -262,  2309,  2833,   804,   159,   431,-32768,-32768,-32768,
  16999. +-32768,  -278,-32768,  -110,   -90,-32768,   233,    34,  -210,    83,
  17000. +    11,   -91,  -121,    -3,  1446,   -82,  1348,  -127,  -674,   329,
  17001. +-32768,  -186,-32768,-32768,   180,-32768,-32768,-32768,-32768,-32768,
  17002. +  1092,-32768,   634,-32768,   122,-32768,-32768,   821,   742,    14,
  17003. +-32768,-32768,-32768,   526,  -285,    12,  1299,  1300,-32768,-32768,
  17004. +-32768,-32768,-32768,  -131,-32768,   473,   686,-32768,   533,   394,
  17005. +   469,  -411,-32768,-32768,-32768,-32768,-32768,-32768,   939,-32768,
  17006. +   482,   829,   573,   857,  1683,  1544,  -371,-32768,  1375,     0,
  17007. +     1,-32768,  4129,   -99,   646,-32768,  3274,-32768,-32768,  3935,
  17008. +    -4,   198,  -327,  1336,  3574,   852,  -188,-32768,  1912,-32768,
  17009. + -1147,  -942,  -321,   101,-32768,   539,  -106,   -94,-32768,-32768,
  17010. +-32768, -1132,  -932, -1108,-32768,-32768,-32768,-32768,-32768,-32768,
  17011.  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  17012. --32768,-32768,-32768,-32768,-32768,   -37,-32768,-32768,-32768,-32768,
  17013. --32768,  -425,    86,-32768,    90,-32768,  -354,  -133,-32768,-32768,
  17014. -  -293,  1052,  -286,-32768,-32768,    40,   530,-32768,    57,-32768,
  17015. +-32768,-32768,-32768,-32768,-32768,   -43,-32768,-32768,-32768,-32768,
  17016. +-32768,  -421,    70,-32768,    69,-32768,  -369,  -132,-32768,-32768,
  17017. +  -258,  1015,  -247,-32768,-32768,    60,   500,-32768,   127,-32768,
  17018.    -260
  17019.  };
  17020.  
  17021.  
  17022. -#define    YYLAST        9897
  17023. +#define    YYLAST        9739
  17024.  
  17025.  
  17026.  static const short yytable[] = {    66,
  17027. -    46,   323,   525,   368,   677,   600,   557,    85,   351,   351,
  17028. -    30,   533,   590,   559,   195,    85,    96,   315,   318,   103,
  17029. -   103,    84,   103,   642,   536,   468,   179,   556,    66,   123,
  17030. -   362,   291,    97,   232,   352,   347,   640,   359,   921,   150,
  17031. -   412,    66,   195,   403,   404,   395,   353,    85,  1218,   960,
  17032. -  1113,  1234,  1150,     8,    85,   505,  -124,   834,   834,   505,
  17033. -   143,    84,   505,    -1,  1256,   196,    85,  1225,    75,    78,
  17034. -   310,   345,    85,    96,  1263,   128,   557,   872,    44,    -2,
  17035. -   603,   655,    85,   559,     7,     8,    76,   513,   525,   287,
  17036. -   150,    85,    77,    85,    95,   674,   103,   302,   342,   308,
  17037. -   103,   189,    93,   103,   103,   103,   426,   122,   674,   618,
  17038. -  1265,   301,   343,  1251,  1275,    66,    46,   150,    66,   311,
  17039. -  -473,   165,    19,  -473,   429,   604,   835,  1301,   100,   100,
  17040. -   605,   697,  1114,   363,    22,   150,   150,   150,   331,  1117,
  17041. -  1278,  1095,   344,   348,  1317,  1057,    82,  1305,   566,   781,
  17042. -  1150,   286,  1266,    88,   619,  1038,   190,   784,   427,   620,
  17043. -   560,   150,   675,   606,    26,   339,   698,   100,  -473,   513,
  17044. -   966,  -473,   713,  -473,    89,  1157,    21,    93,    93,    66,
  17045. -   417,   396,   387,  -473,   100,    73,   176,   427,  1073,   103,
  17046. -   514,     8,   621,   362,    44,   425,   349,   401,   538,   429,
  17047. -   515,  -473,  -473,   529,  1054,  -700,  -473,   277,    90,   136,
  17048. -   516,  -700,   423,   517,   518,  -473,    93,     8,   967,   295,
  17049. -   297,  1278,  1278,   351,   351,   599,    85,   436,   165,   195,
  17050. -   277,    21,    74,    93,   502,   165,   165,  1104,   190,  1110,
  17051. -    93,   312,    75,   188,   595,   758,  1178,   530,   597,   598,
  17052. -   596,   582,     8,   137,   138,   759,   581,   368,   416,   165,
  17053. -    76,   533,   190,   362,    78,   310,    93,    85,   361,   760,
  17054. -   100,   512,   513,   436,   436,   527,   403,   404,    99,   329,
  17055. -   768,   150,   188,  -230,   362,   100,   644,   770,   427,   315,
  17056. -   318,   639,   583,   900,   455,    85,   363,   456,   390,    21,
  17057. -   457,   584,   537,   165,   404,   603,   465,   678,   875,   103,
  17058. -   193,  1230,   103,  1113,   311,   504,   697,   103,   646,    93,
  17059. -  1113,    85,    96,   824,   769,   655,   330,  -230,  -230,   193,
  17060. -  1310,   771,    21,    75,    93,   884,   585,   712,    97,   695,
  17061. -  1153,  -224,   391,   392,  1080,   425,   434,   193,   166,   167,
  17062. -   604,    76,   165,  -696,   679,   605,   435,   150,    66,   150,
  17063. -   150,   527,  1080,     7,   100,    66,   363,   825,  1260,  1203,
  17064. -   570,   150,  1311,   150,  1113,   150,   150,   150,   610,   118,
  17065. -   614,   616,   885,   150,  -231,   454,   119,   363,   606,   150,
  17066. -   461,  1081,   150,   425,   193,  1114,   747,  -103,   749,   750,
  17067. -    95,    19,  1114,  1024,  1025,    85,    99,   425,   133,  1188,
  17068. -   362,   150,    66,    22,    66,   417,  1204,   362,   134,    85,
  17069. -   945,   160,   161,  1271,  1332,  1080,  1307,    12,  -231,  -231,
  17070. -   799,   554,   664,   943,  1080,   190,     7,   506,   165,   507,
  17071. -   193,    19,  -225,    26,   647,    85,    85,    85,    85,   183,
  17072. -    17,    21,  1080,    22,     7,     8,  1114,   288,   113,   513,
  17073. -  1026,   680,   502,   826,  1348,   140,  1333,   290,   165,   165,
  17074. -  1272,    75,  1282,   351,    19,   141,   463,     7,     8,   828,
  17075. -  -102,  1288,  1186,    26,  -224,   821,    22,   815,   142,    76,
  17076. -   703,   464,    19,   416,   590,    85,   165,   436,   833,  1327,
  17077. -   657,   554,   362,   697,    22,  1214,   658,   827,   362,   436,
  17078. -   436,  1349,   527,   363,   557,    19,   508,   754,   188,    66,
  17079. -   363,   559,   361,   829,   533,   403,   429,    22,   193,   368,
  17080. -   179,   755,   463,   787,    26,   556,   320,   536,   655,   113,
  17081. -   113,   113,    78,    79,   168,   169,   170,   561,   324,  1215,
  17082. -   150,    85,   193,   468,   321,   681,   362,    26,    78,    79,
  17083. -  1062,   756,  1053,  -287,   865,    84,   298,   299,   886,  -287,
  17084. -  1279,   616,   696,   113,   171,   699,   425,   788,   789,   235,
  17085. -   705,   706,   707,   708,   709,    78,   310,  1135,  1136,  1137,
  17086. -    21,   187,    80,   172,   277,   127,  -508,   883,   722,  -225,
  17087. -   719,   188,   150,   150,   847,   363,    21,   754,    80,    81,
  17088. -   847,   363,   188,  -700,  1280,  -700,  -700,     7,   506,   340,
  17089. -   677,   755,  -700,   388,   389,    75,   150,   150,   165,   150,
  17090. -   751,  1097,   128,  1088,  1083,   311,   373,   173,   174,   175,
  17091. -    99,   385,   302,    76,  -700,  -700,  -700,   698,  -700,    85,
  17092. -  -700,   756,   636,   425,   368,    19,   923,   100,   847,   363,
  17093. -   808,   645,   241,  -700,  -288,  -700,  -700,    22,   410,   934,
  17094. -  -288,   935,  -700,   100,    75,   809,    21,   436,   160,   161,
  17095. -   193,   362,   188,  1129,    12,   362,   425,   436,   436,   436,
  17096. -   811,   424,    76,   430,  -700,  -700,   386,    26,  -700,   432,
  17097. -  -700,   362,   188,   876,    21,   433,    93,    17,   878,   879,
  17098. -  1058,  1059,   881,  1061,   439,   698,   -27,   165,   434,   -27,
  17099. -    21,   431,    93,   397,   398,   963,   719,   964,   435,   965,
  17100. -   571,   -27,   188,   333,   758,   334,    13,    14,   362,   335,
  17101. -  1159,  1160,   195,   115,   759,   362,   446,    85,   890,   891,
  17102. -   892,   447,   315,   318,  1176,   165,   193,   450,   760,   315,
  17103. -   318,   572,   449,   573,   451,   574,   452,   575,   436,   453,
  17104. -   436,   193,    13,    14,  1190,  1191,   336,    85,   337,    13,
  17105. -    14,   436,   338,    85,   363,    66,    66,    66,   363,   505,
  17106. -   489,   490,   542,   949,   361,  1032,  1033,   545,  1033,  1078,
  17107. -  1079,   -81,   550,    85,   363,    85,   930,   -81,   -80,  1342,
  17108. -  1343,   113,   113,   113,   -80,   531,     8,   388,  1180,     7,
  17109. -     8,  1222,   544,    11,   115,   115,   115,   547,   407,   548,
  17110. -   408,   567,   455,   456,   409,   549,   150,   150,   150,   150,
  17111. -   847,   363,   397,  1181,   150,   847,   847,   847,   363,   241,
  17112. -   532,   388,  1187,    19,   442,   445,   349,    19,   115,   564,
  17113. -   513,   427,    85,    21,  -695,    93,   601,    21,   602,    22,
  17114. -  1313,  1314,   150,   617,    70,   103,   626,    66,   417,    85,
  17115. -   627,   607,    87,   920,   425,   425,   633,   425,   491,   685,
  17116. -    98,   608,   455,   456,   104,   104,   641,   104,   686,    26,
  17117. -   690,   516,   691,    70,   609,   518,   710,   820,     8,   648,
  17118. -   711,   713,  1021,   722,   104,   766,    70,   767,   780,   361,
  17119. -   436,   436,    87,   436,   782,   492,   493,   784,   801,    98,
  17120. -   494,   495,   496,   497,   800,   649,   810,   455,   456,   554,
  17121. -   650,    98,     8,   868,   812,  -228,   814,    98,   816,   698,
  17122. -   832,   817,   818,    66,   417,    21,   416,    93,   819,   857,
  17123. -   823,   859,   860,  1162,   861,   104,    98,   862,   968,   649,
  17124. -   866,   104,   864,  1063,   869,   104,   863,   867,   104,   104,
  17125. -   104,   871,   292,   296,   877,   150,    66,   150,   880,    21,
  17126. -    70,    93,   104,    70,    13,    14,   882,  1017,   399,   150,
  17127. -   150,  -332,   150,   887,   888,   893,  1103,   904,  1109,   894,
  17128. -   104,   104,   104,   905,   898,   681,   899,   906,   901,   902,
  17129. -  -700,   903,  -700,  -700,  -332,  -332,   907,  -332,   461,  -700,
  17130. -    66,   417,   416,   908,  -101,   910,   104,   159,   160,   161,
  17131. -   113,   911,   913,   557,    12,  1048,   113,   914,  1199,  1200,
  17132. -  1346,  -700,  -700,   400,    70,  -700,   915,  -700,   916,   918,
  17133. -  1233,   917,   919,   932,   104,   165,  1162,    17,   929,  1131,
  17134. -  1132,   931,   594,   933,   402,   160,   161,   940,   938,   939,
  17135. -   947,    12,   834,   100,   953,   948,    11,   944,  1010,   188,
  17136. -   950,   193,   315,   318,   113,   961,   115,   115,   115,   646,
  17137. -  1048,    98,   104,   847,    17,  1249,  1008,  1023,  1014,   416,
  17138. -  1039,  1041,     8,    92,    10,    11,  1042,  1096,   356,  1043,
  17139. -    12,  1044,  1050,   513,   486,   487,   488,   489,   490,  1162,
  17140. -    21,  1060,    93,  1064,  1082,    15,  1055,   425,   425,    16,
  17141. -  1056,   959,    98,    17,   514,  1065,  1182,  1066,   104,   104,
  17142. -    70,  1069,  1087,   459,   515,   535,   104,   659,   660,    21,
  17143. -  1068,    93,  1162,  1070,   516,  1071,  1195,   517,   518,  1074,
  17144. -    98,  1300,  1075,  1138,  1076,  1090,  1091,  1092,   847,   847,
  17145. -   847,  1099,  1098,  1115,   104,   425,  1101,   104,   425,  1122,
  17146. -  1123,  1015,   104,   193,  1124,    19,    98,  1128,   661,  1149,
  17147. -  1022,   357,   112,  1306,  1154,    21,  1155,    22,  1173,  1036,
  17148. -  1169,    98,  1158,  1175,   662,  1347,  1201,  1177,  1202,   140,
  17149. -  1205,  1206,   150,  1213,  1219,   455,   456,  1207,  1208,   141,
  17150. -   362,  1269,   104,    70,   104,   104,    70,    26,  1209,  1220,
  17151. -    70,  1221,   663,  1258,  1223,  1231,   104,  1247,   104,  1257,
  17152. -   104,   104,   104,  1267,  1268,  1273,  1291,  1270,   104,  1295,
  17153. -  1304,  1274,     7,     8,   104,  1309,   185,   104,  1080,   628,
  17154. -  1312,  1320,  1315,  1318,   113,   113,   113,  1323,  1325,  1339,
  17155. -    98,   113,   113,   113,   316,   319,   104,    70,  1326,    70,
  17156. -  1329,  1341,   425,  1331,    98,  1337,  1350,  1286,  1351,   165,
  17157. -    19,     7,   100,   513,  1352,    11,  1353,  1355,  1356,   325,
  17158. -    21,     5,    22,   569,   955,   327,   461,   112,   962,   306,
  17159. -    98,    98,    98,    98,   607,   115,   328,  1212,  1217,  1238,
  17160. -   346,   115,    85,   363,   608,   459,   772,  1138,   459,    19,
  17161. -   700,   702,    26,   704,   516,  1125,  1126,   609,   518,    21,
  17162. -   714,    22,  1168,   100,  1106,   858,   185,  1246,  1133,  1134,
  17163. -   831,   459,   954,    24,   889,   726,  1018,   124,   125,   870,
  17164. -    98,   958,   104,    25,    48,  1072,   672,   803,  1035,   115,
  17165. -  1034,    26,   952,    86,   104,   104,    27,    70,   753,  1003,
  17166. -    48,   748,  1302,   513,   798,  1322,     8,   765,    10,    11,
  17167. -    21,  1324,    93,    48,    12,   535,   484,   485,   486,   487,
  17168. -   488,   489,   490,  1037,   514,     0,   155,  -232,     0,    15,
  17169. -     0,   624,     0,    16,   515,   104,    87,    17,     0,   186,
  17170. -     0,     0,  -232,  -232,   516,     0,     0,   517,   518,  -232,
  17171. -     0,   230,     0,    21,     0,    93,   279,    48,     0,     0,
  17172. -     0,  -232,     0,     0,     0,     0,  1198,     0,   279,   279,
  17173. -     0,     0,  -232,  -232,     0,  -232,   155,  -232,   554,   279,
  17174. -     0,     0,     0,     0,     0,     0,     0,   104,   104,    70,
  17175. -   752,     0,     0,     0,   922,   798,     0,     0,     0,     8,
  17176. -    48,    10,   185,   155,     0,  -232,  -232,    12,     0,  -232,
  17177. -  -232,   104,   104,     0,   104,     0,     0,   365,     0,  -232,
  17178. -     0,     0,    15,     0,     0,     0,    16,     0,     0,     0,
  17179. -    17,     0,  1240,  1241,    98,  1242,  1243,     0,     0,     0,
  17180. -     0,     0,     0,    70,     0,     0,    21,     0,    93,   113,
  17181. -     0,   957,     0,     0,   413,     0,     7,     8,    92,    10,
  17182. -    11,     0,   104,     0,    48,    12,   316,   319,     0,   115,
  17183. -   115,   115,   104,   104,   104,     0,   115,   115,   115,     0,
  17184. -    15,     0,     0,     0,    16,     0,     0,     0,    17,  -425,
  17185. -     0,     0,     0,     0,    19,     0,  1009,     0,     0,     0,
  17186. -     0,     0,     0,     0,    21,     0,    22,     0,     0,   676,
  17187. -     0,   186,     0,   414,   100,     0,   160,   161,    24,     0,
  17188. -   358,     0,    12,     0,   113,   113,   113,     0,    25,     0,
  17189. -     0,     0,    98,     0,     0,     0,    26,     0,     0,   279,
  17190. -     0,    27,  1319,     0,     0,    17,     0,     0,     0,  1046,
  17191. -  1049,     0,   230,   104,   513,   104,  -425,     0,     0,     0,
  17192. -   186,    21,    98,    93,   927,     0,   104,     0,    98,     0,
  17193. -   798,   798,   798,     0,   229,   514,     0,     0,   535,   278,
  17194. -   555,     0,     0,     0,     0,   515,     0,     0,    98,     0,
  17195. -    98,   278,   278,     0,     0,   516,   459,     0,   524,   518,
  17196. -     0,     0,   278,    98,     0,  1049,    48,     0,     0,   796,
  17197. -     0,     0,     0,     7,     8,     0,     0,     0,     0,     0,
  17198. -     0,   104,   104,   104,   104,    70,     0,     0,     0,   104,
  17199. -   798,   798,   798,     0,     0,     0,     0,     0,     0,     0,
  17200. -   364,   100,     0,   155,   427,     0,   186,    98,     0,     0,
  17201. -   555,    19,     0,     0,     0,     0,   459,   104,     0,     0,
  17202. -   104,    21,    70,    22,    98,     0,   139,     0,     0,     0,
  17203. -  1016,   365,     0,     0,     0,   140,     0,     0,     0,  1142,
  17204. -     0,   513,     0,     0,  1147,   141,     0,     0,    21,     0,
  17205. -    93,     0,     0,    26,   112,     0,     0,   155,   142,    48,
  17206. -   854,   459,   514,     0,   682,   104,   104,     0,   104,     0,
  17207. -     0,     0,   515,     0,     0,     0,     0,     0,     0,     0,
  17208. -     0,   279,   516,     0,   279,   517,   518,   358,     0,   279,
  17209. -   682,   682,   682,   682,   115,     0,     0,     0,    70,     0,
  17210. -     0,     0,     8,   279,    10,    11,     0,   279,   112,     0,
  17211. -    12,     0,     0,   101,   105,     0,     0,     0,     0,  1192,
  17212. -  1193,     0,   278,     0,     0,    15,     0,     0,     0,    16,
  17213. -   104,    70,   104,    17,   358,   229,     0,     0,     0,   279,
  17214. -   230,     0,   796,     0,   104,   104,  1094,   104,  1211,    21,
  17215. -     0,    93,   498,     0,     0,     0,     0,   555,     0,     0,
  17216. -   231,     0,     0,   364,   365,   280,     0,     0,     0,   115,
  17217. -   115,   115,     0,     7,   100,    70,     0,   280,   280,     0,
  17218. -     0,     0,   358,     0,     0,     0,   499,     0,   280,     0,
  17219. -     7,     8,     0,  1239,    11,     0,     0,   314,   317,     0,
  17220. -  1244,  1245,     0,     0,     0,  1143,  1144,  1145,  1146,  1250,
  17221. -     0,    19,     0,     0,     0,     0,     0,  1152,     0,     0,
  17222. -     0,    21,     0,    22,     0,     0,   366,     0,    19,   376,
  17223. -   378,   513,     0,   364,     0,   108,   316,   946,    21,   358,
  17224. -    22,   358,   358,     0,     0,   109,     0,     0,   798,   555,
  17225. -     0,  1167,   843,    26,   364,   365,     0,     0,   110,  1174,
  17226. -     0,     0,   844,     0,     0,     0,     0,   358,  1298,  1299,
  17227. -    26,     0,   516,   358,     0,   845,   518,   482,   483,   484,
  17228. -   485,   486,   487,   488,   489,   490,     0,   278,     0,   316,
  17229. -   319,     0,     0,     0,     0,     0,   316,   319,     0,     0,
  17230. -     0,     0,     0,   555,   278,     0,     0,   278,     0,     0,
  17231. -     0,     0,   278,   278,   278,   278,   278,     0,     0,     0,
  17232. -     0,     0,     0,   798,   798,   798,   278,     0,   358,     0,
  17233. -   278,     0,     0,  1224,   413,  1344,     7,     8,    92,    10,
  17234. -    11,   316,   946,     0,     0,    12,     0,     0,   280,   459,
  17235. -     0,     0,     0,     0,  1224,  1224,     0,     0,   358,     0,
  17236. -    15,   231,   278,   229,    16,     0,     0,   104,    17,  -424,
  17237. -     0,     0,     0,     0,    19,     0,     0,     0,     0,  1224,
  17238. -   364,     0,     0,     0,    21,     0,    22,   364,     0,   366,
  17239. -     0,     0,   682,   414,     0,     0,   924,     0,    24,     0,
  17240. -     0,     6,     0,     7,     8,     9,    10,    11,    25,     0,
  17241. -     0,     0,    12,     0,     0,     8,    26,    10,    11,     0,
  17242. -     0,    27,   682,    12,     0,    13,    14,    15,   555,     0,
  17243. -     0,    16,   365,     0,     0,    17,  -424,     0,    15,    18,
  17244. -   358,    19,    16,     0,  1303,    20,    17,     0,   555,     0,
  17245. -   956,    21,     0,    22,     0,     0,    23,     0,     0,   366,
  17246. -   726,   726,    21,     0,    93,    24,     0,     0,     0,   631,
  17247. -   632,     0,   364,  1321,     0,    25,   992,    98,   364,     0,
  17248. -   366,     0,     0,    26,     0,   555,     0,     0,    27,     0,
  17249. -     0,     0,   365,     0,    28,    29,     0,     7,   100,   358,
  17250. -     0,   185,     0,     0,     0,     0,   279,     0,     0,     0,
  17251. -     0,     0,   358,   280,   358,     0,     0,     0,     0,     0,
  17252. -     0,     0,    48,     0,   682,     0,   364,     0,     0,     0,
  17253. -   280,     0,     0,   280,     0,    19,     0,   279,   280,   280,
  17254. -   280,   280,   280,     0,     0,    21,     0,    22,     0,     0,
  17255. -     0,     0,   280,   854,     0,     0,   280,     0,     0,    24,
  17256. -   413,     0,     7,     8,    92,    10,    11,     0,   358,    25,
  17257. -   358,    12,   358,     0,     0,     0,     0,    26,     0,   194,
  17258. -     0,     0,    27,     0,     0,     0,    15,     0,   280,   231,
  17259. -    16,     0,     0,     0,    17,  -427,     0,   269,    48,     0,
  17260. -    19,     0,     0,   773,   775,     0,   366,     0,     0,     0,
  17261. -    21,     0,    22,   366,     0,   278,     0,     0,     0,   414,
  17262. -   269,     0,     0,     0,    24,     0,     0,   322,     0,   316,
  17263. -   319,   155,     0,   992,    25,     0,     0,     0,     0,     0,
  17264. -   992,     0,    26,     0,     0,   278,   354,    27,     0,     0,
  17265. -     0,   364,     0,     0,     0,   364,     0,     0,   360,     0,
  17266. -     0,   394,  -427,     0,     0,     0,     0,     0,     0,     0,
  17267. -     0,   364,     0,     0,     0,    48,   413,     0,     7,     8,
  17268. -    92,    10,    11,     0,     7,     8,     0,    12,   427,     0,
  17269. -     0,     0,     0,     0,     0,     0,   841,   842,   366,     0,
  17270. -     0,     0,    15,     0,   366,     0,    16,     0,   364,     0,
  17271. -    17,  -426,     0,     0,     0,   364,    19,     0,     0,     0,
  17272. -     0,     0,    19,     0,     0,   513,    21,   992,    22,   278,
  17273. -     0,   676,    21,     0,    22,   414,     0,     0,     7,     8,
  17274. -    24,     0,     0,     0,     0,     0,   607,   278,     0,     0,
  17275. -    25,     0,   366,     0,     0,     0,   608,     0,    26,     0,
  17276. -   278,     0,     0,    27,    26,     0,   516,     0,     0,   609,
  17277. -   518,     0,     8,    92,    10,    11,    19,     0,  -426,   513,
  17278. -    12,   462,     0,     0,     0,     0,    21,     0,    22,     0,
  17279. -     0,     0,     0,     0,     0,    15,     0,     0,     0,    16,
  17280. -   607,   992,     6,    17,     7,     8,     9,    10,    11,  1226,
  17281. -   608,     0,   992,    12,     0,     0,     0,     0,    26,    21,
  17282. -   516,    93,     0,   609,   518,   279,     0,     0,    15,     0,
  17283. -  1226,  1226,    16,     0,     0,     0,    17,     7,     8,     0,
  17284. -     0,   280,    19,     0,     0,     0,   326,     0,     0,     0,
  17285. -     0,   358,    21,     0,    22,  1226,     0,    23,     0,     0,
  17286. -     0,     0,   992,     0,   593,   360,    24,     0,     0,   992,
  17287. -     0,   280,   992,     0,     0,    19,    25,   366,     0,   773,
  17288. -   775,   366,     0,     0,    26,    21,     0,    22,     0,    27,
  17289. -  1102,     0,     0,   992,   634,    28,   992,   366,     0,   140,
  17290. -   637,     0,     0,   992,     0,     0,     0,     0,     0,   141,
  17291. -     0,     0,   360,     0,     0,     0,     0,    26,     0,     0,
  17292. -     0,     0,   142,     8,    92,    10,    11,   992,     0,     0,
  17293. -     0,    12,  1004,  1005,   366,   656,     0,     0,     0,  1004,
  17294. -  1005,   366,   992,     0,   692,   693,    15,   694,   358,     0,
  17295. -    16,     0,     0,     0,    17,   280,     0,   992,     0,     0,
  17296. -   360,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  17297. -    21,     0,    93,   280,   992,   992,     0,   555,     7,   100,
  17298. -     0,     0,    11,     0,   269,     0,   280,   593,    94,     0,
  17299. -   723,   724,     0,   728,   729,   730,   731,   732,   733,   734,
  17300. -   735,   736,   737,   738,   739,   740,   741,   742,   743,   744,
  17301. -   745,   746,     0,     0,   358,     0,    19,   360,     0,   360,
  17302. -   360,     0,     0,     0,     0,     0,    21,     0,    22,     0,
  17303. -   785,   786,   229,     0,     8,   785,    10,     0,     0,     0,
  17304. -   108,     0,    12,     0,     0,   360,     0,     0,   278,     0,
  17305. -   109,   360,     0,   229,   229,     0,     0,    15,    26,     0,
  17306. -     0,    16,     0,   110,     0,    17,   805,   807,     0,     0,
  17307. -     0,     0,     0,     0,     0,     0,     0,     0,   229,     0,
  17308. -     0,    21,     0,    93,     0,     0,     0,     0,     0,     0,
  17309. -     7,     8,    92,    10,    11,     0,     0,   356,     0,    12,
  17310. -     0,     7,     8,   152,    10,   153,   360,     0,     0,     0,
  17311. -    12,   839,   840,   593,    15,     0,     0,     0,    16,    83,
  17312. -     0,   849,    17,     0,     0,    15,     0,   856,    19,    16,
  17313. -     0,    83,    83,    17,    83,     0,   360,     0,    21,    19,
  17314. -    22,     0,     0,     0,     0,    42,     0,   593,     0,    21,
  17315. -     0,    22,   380,     0,   154,     0,     0,     0,     0,   178,
  17316. -     0,     0,   381,    24,     0,    42,    42,     0,   111,     0,
  17317. -    26,   873,     0,    25,    42,   382,     0,     0,     0,     0,
  17318. -   357,    26,     0,   874,     0,    42,    27,    42,     0,     0,
  17319. -     7,     8,   159,   160,   161,     0,     0,     0,     0,    12,
  17320. -   364,     0,     0,     0,     0,     0,     0,   191,    83,     0,
  17321. -    83,    83,    83,     0,     0,    83,    83,    83,   360,     0,
  17322. -     0,     0,    17,     0,     0,     0,     0,     0,    19,     0,
  17323. -     0,   513,     0,     0,     0,     0,    42,     0,    21,   909,
  17324. -    22,     0,    42,     0,   191,     0,    42,     0,     0,   111,
  17325. -   111,   111,   140,     0,     0,     0,     0,     0,   231,     0,
  17326. -     0,    42,   141,    42,    42,     0,     0,     0,   925,   926,
  17327. -    26,   928,   631,   632,   280,  1108,   593,   360,     0,   231,
  17328. -   231,    42,    42,   111,     0,     0,     0,     0,     0,     0,
  17329. -   360,   191,   360,     0,     0,     0,     0,   942,     0,     0,
  17330. -     0,    83,     0,     0,   231,     0,     0,    42,     0,     0,
  17331. -     0,     0,     0,     0,     0,     7,     8,   159,   160,   161,
  17332. -     0,   951,     0,     0,    12,    42,     0,     0,     0,     0,
  17333. -     0,     0,     0,   593,     0,    42,     0,     0,     0,    83,
  17334. -     0,     0,     0,     0,     0,     0,   360,    17,   360,     0,
  17335. -   360,     0,     0,    19,     0,     0,   513,     0,  1007,   100,
  17336. -     0,   160,   161,    21,     0,    22,     0,    12,     0,     0,
  17337. -  1011,  1012,  1013,     0,     0,     0,     0,   607,   593,     0,
  17338. -     0,     0,     0,    83,     0,    83,    83,   608,     0,     0,
  17339. -    17,     0,  1019,  1020,     0,    26,     0,   516,     0,   513,
  17340. -   615,   518,     0,     0,     0,     0,    21,   121,    93,     7,
  17341. -     8,    92,    10,    11,     0,    83,     0,   509,    12,     0,
  17342. -   514,    83,     0,     0,    83,   191,   366,    42,     0,    83,
  17343. -   515,   593,   593,    15,     0,  1051,     0,    16,     0,     0,
  17344. -   516,    17,     0,   517,   518,     0,     0,    19,     0,  1067,
  17345. -     0,     0,     0,     0,     0,    42,     0,    21,    42,    22,
  17346. -     0,     0,     0,    42,     7,     8,   152,    10,   153,     0,
  17347. -     0,    24,     0,    12,     0,     0,     0,     0,     0,     0,
  17348. -     0,    25,     0,     0,     0,     0,     0,   593,    15,    26,
  17349. -     0,     0,    16,     0,    27,     0,    17,     0,     0,  1089,
  17350. -     0,     0,    19,    42,    42,    42,    42,     0,     0,     0,
  17351. -     0,    42,    21,     0,    22,     0,     0,    42,     0,    42,
  17352. -     0,   111,   111,   111,     0,     0,    24,     7,     8,    42,
  17353. -     0,    11,     0,  1127,     0,    42,    25,     0,    42,     0,
  17354. -     0,     0,     0,    83,    26,     0,     0,  1130,     0,    27,
  17355. -     0,     0,     0,     0,     0,     0,     0,    42,    42,     0,
  17356. -    42,   593,     0,    64,     0,    19,   593,     0,  1148,     0,
  17357. -     0,     8,   152,    10,   153,    21,     0,    22,  1156,    12,
  17358. -     0,     0,     0,    64,    64,     0,   116,     0,     0,   140,
  17359. -     0,     0,    64,     0,    15,     0,     0,     0,    16,   141,
  17360. -     0,     0,    17,    64,     0,    64,     0,    26,     0,    83,
  17361. -     0,     0,   142,     0,     0,     0,     0,     0,    21,    83,
  17362. -    93,    83,    83,     7,     8,    92,    10,    11,     0,   360,
  17363. -   622,     0,    12,     0,     0,     0,     0,     0,     0,     0,
  17364. -     0,   593,   593,     0,     0,     0,     0,    15,     0,  1196,
  17365. -  1197,    16,     0,   509,    64,    17,     0,     0,     0,     0,
  17366. -    64,    19,     0,   178,    64,   795,     0,   116,   116,   116,
  17367. -   593,    21,     0,    22,     0,     0,     0,     0,     0,    64,
  17368. -     0,    64,    64,     0,     0,    24,     8,    92,    10,    11,
  17369. -     0,  1228,  1345,     0,    12,    25,    42,     0,     0,    64,
  17370. -    64,   116,     0,    26,     0,     0,     0,     0,    27,    15,
  17371. -     0,     0,   117,    16,     0,   593,     0,    17,     0,     0,
  17372. -     0,     0,   593,   593,     0,    64,   360,     0,     0,   151,
  17373. -     0,   593,     0,    21,     0,    93,  -306,     8,  -306,    10,
  17374. -   185,     0,     0,    64,     0,    12,     0,     0,    42,    42,
  17375. -   111,     0,     0,    64,     0,     0,   853,     0,     0,     0,
  17376. -    15,     0,     0,     0,    16,     0,     0,     0,    17,     0,
  17377. -     0,     0,    42,    42,  -306,    42,     0,   513,     0,     0,
  17378. -   151,     0,     0,     0,    21,     0,    93,     0,     0,    83,
  17379. -   593,   593,   360,   117,   117,   117,     0,     0,   514,    83,
  17380. -    83,    83,     0,     0,   111,     0,     0,   151,   515,     0,
  17381. -     0,     0,     0,     0,     0,     0,  -306,     0,   516,     0,
  17382. -     0,   517,   518,     0,     0,   151,   151,   384,     0,     0,
  17383. -     0,     0,     0,     0,     0,     0,     0,     0,   795,     0,
  17384. -  1024,   100,     0,     0,   534,    64,     0,     0,     0,     0,
  17385. -     0,   151,     0,     0,     0,     0,     0,   593,     0,     0,
  17386. -     0,     0,     0,     0,     0,     0,     7,     8,   159,   160,
  17387. -   161,     0,     0,    64,     0,    12,    64,     0,    19,     0,
  17388. -    83,    64,    83,     0,     0,     0,     0,     0,    21,     0,
  17389. -    22,     0,     0,    83,     0,     0,     0,  1026,    17,     0,
  17390. -   589,     0,    24,     0,    19,     0,     0,   513,     0,     0,
  17391. -     0,     0,    25,     0,    21,     0,    22,   437,     0,     0,
  17392. -    26,    64,    64,    64,    64,    27,     0,     0,   607,    64,
  17393. -     0,   795,   795,   795,     0,    64,     0,    64,   608,   116,
  17394. -   116,   116,     0,     0,     0,     0,    26,    64,   516,     0,
  17395. -     0,   609,   518,    64,     0,     0,    64,     0,     0,     0,
  17396. -     0,     0,     0,   521,   521,   521,     0,     0,     0,     0,
  17397. -     0,   151,     0,     0,     0,    64,    64,     0,    64,     0,
  17398. -     0,     0,    42,    42,   111,   111,   111,    83,   191,     0,
  17399. -    42,   853,   853,   853,     0,     0,   659,     8,   152,    10,
  17400. -   153,     0,     0,     0,     0,    12,   479,   480,   481,   482,
  17401. -   483,   484,   485,   486,   487,   488,   489,   490,    42,     0,
  17402. -    15,    42,     0,    42,    16,     0,     0,     0,    17,     0,
  17403. -     0,     0,    83,    83,    19,    83,   795,   795,   795,     0,
  17404. -     0,     0,     0,     0,    21,     0,    22,   611,     0,   611,
  17405. -   611,   521,     0,   662,     0,     0,     0,     0,    24,     0,
  17406. -     0,   151,     0,   151,     0,   384,   384,   384,    25,     8,
  17407. -    92,    10,    11,   151,     0,   356,    26,    12,     0,   151,
  17408. -     0,    27,   151,   797,     0,     0,     0,     0,     0,     0,
  17409. -   191,     0,    15,     0,     0,     0,    16,     0,     0,    42,
  17410. -    17,   151,     0,     0,   377,   379,   383,     0,     0,   513,
  17411. -     0,     0,     0,     0,    64,     0,    21,     0,    93,     0,
  17412. -     0,     0,     0,     7,   100,     0,     0,   427,     0,     0,
  17413. -   514,    42,    42,    42,     7,     8,     0,     0,   185,     0,
  17414. -   515,     0,     0,     0,     0,    42,    42,   149,    42,     0,
  17415. -   516,     0,     0,   517,   518,     0,     0,     0,   357,     0,
  17416. -     0,    19,     0,     0,     0,     0,    64,    64,   116,   192,
  17417. -     0,    21,    19,    22,   855,     0,    42,     0,     0,     0,
  17418. -     0,     0,    21,     0,    22,    24,     0,   761,   192,     0,
  17419. -    64,    64,     0,    64,     0,    25,   140,     0,   149,   521,
  17420. -   521,     0,   521,    26,     0,     0,   141,     0,    27,   521,
  17421. -     0,     0,     0,     0,    26,     0,     0,     0,     0,   142,
  17422. -     0,     0,   116,     0,     0,   149,     0,     0,     0,     0,
  17423. -     0,     0,     0,     7,     8,     0,    10,   440,   234,   235,
  17424. -   611,   236,    12,   149,   149,   149,     0,     0,     0,   853,
  17425. -     0,     0,     0,   393,     0,     0,   797,    15,   237,   238,
  17426. -   239,    16,     0,   240,     0,    17,     0,   241,   242,   149,
  17427. -   243,    19,   244,   245,     0,     0,   246,   247,   248,   249,
  17428. -   250,    21,     0,    22,     0,     0,     0,     0,     0,     0,
  17429. -     0,     0,   611,   611,   848,     0,     0,     0,     0,   192,
  17430. -   848,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  17431. -     0,   256,   257,   258,     7,     8,   151,   151,   259,   151,
  17432. -     0,     0,   260,     0,   853,   853,   853,     0,     0,     0,
  17433. -     0,     0,     0,     0,   261,     0,     0,     0,     0,     0,
  17434. -   629,     0,   630,     0,   377,   379,   383,     0,   384,   797,
  17435. -   797,   797,    19,     0,     0,     0,     0,   534,   643,     0,
  17436. -     0,     0,    21,     0,    22,     0,     0,   521,    42,     0,
  17437. -     0,     0,     0,     0,     0,     0,   140,   437,   437,   437,
  17438. -   669,     0,   589,     0,     0,     0,   141,   192,     0,   149,
  17439. -     0,     0,     0,     0,    26,     0,     0,     0,     0,   142,
  17440. -    64,    64,   116,   116,   116,     0,     0,     0,    64,   855,
  17441. -   855,   855,     0,     0,     0,     0,     0,     8,     0,    10,
  17442. -   185,     0,     0,     0,     0,    12,     0,     0,     0,     0,
  17443. -     0,     0,     0,     0,     0,     0,    64,     0,     0,    64,
  17444. -    15,    64,     0,     0,    16,     0,     0,     0,    17,     0,
  17445. -     0,     0,     0,     0,   797,   797,   797,   513,   521,     0,
  17446. -   521,     0,     0,     0,    21,   149,    93,   149,   149,     0,
  17447. -     0,   521,     0,     0,     0,   521,   521,   521,   514,   149,
  17448. -     0,   149,     0,   149,   149,   149,     0,     0,   515,     0,
  17449. -     0,   149,     0,     0,   519,   519,   519,   149,   516,     0,
  17450. -   149,   517,   518,   477,   478,   479,   480,   481,   482,   483,
  17451. -   484,   485,   486,   487,   488,   489,   490,    64,     0,   149,
  17452. -     0,     0,     0,     0,     0,    62,   611,   611,   848,   848,
  17453. -   848,     0,     0,     0,   611,   848,   848,   848,     0,     0,
  17454. -     0,     0,     0,     0,     0,   102,   106,     0,     0,    64,
  17455. -    64,    64,     7,     8,   126,     0,    11,     0,     0,     0,
  17456. -     0,     0,   151,    64,    64,     0,    64,   158,     0,     0,
  17457. -     0,   377,   379,   383,     0,     0,     0,     0,   519,   383,
  17458. -   519,   519,   519,     7,     8,     0,     0,   427,     0,     0,
  17459. -    19,     0,     0,     0,    64,   629,   630,     0,   643,     0,
  17460. -    21,     0,    22,     0,     0,     0,     0,     0,     0,     0,
  17461. -   761,   761,     0,   761,   380,     0,     0,     0,     0,     0,
  17462. -     0,    19,   307,     0,   381,     0,   309,   383,     0,     0,
  17463. -   192,    21,    26,    22,     0,     0,     0,   382,     0,     0,
  17464. -     0,    62,     0,     0,   332,   140,     0,     0,     0,     0,
  17465. -     0,     0,     0,     0,     0,   141,     0,     0,   149,     0,
  17466. -     0,   102,   106,    26,     0,     0,     0,   855,   142,     0,
  17467. -     0,     0,     0,     0,     0,   151,     0,   151,     0,     7,
  17468. -     8,   522,   526,   528,     0,     0,     0,     0,     0,   611,
  17469. -   611,     0,   611,     0,     0,     0,     0,     0,     0,     0,
  17470. -     7,     8,   152,    10,   153,   422,     0,     0,     0,    12,
  17471. -   149,   149,   846,     0,     0,   428,     0,    19,   846,     0,
  17472. -     0,     0,     0,     0,    15,     0,     0,    21,    16,    22,
  17473. -   519,   519,    17,   519,   149,   149,     0,   149,    19,     0,
  17474. -   794,   380,   855,   855,   855,     0,     0,     0,    21,     0,
  17475. -    22,   381,     0,  1105,     0,     0,     0,     0,     0,    26,
  17476. -     0,     0,    24,     0,   382,   612,   846,   522,   526,   528,
  17477. -     0,   519,    25,     0,     0,     0,     0,     0,     0,     0,
  17478. -    26,     0,     0,     0,     0,    27,    64,     0,     0,     0,
  17479. -     0,     0,     0,   384,     0,     0,     0,  1170,     0,     0,
  17480. -     0,     0,     0,     0,     0,   629,   630,   377,   379,   383,
  17481. -     0,     0,     0,   643,   377,   379,   383,     0,     0,     0,
  17482. -     0,     0,     0,   519,   519,   519,     0,     0,     0,     0,
  17483. -     0,   794,     0,     0,     0,   562,     0,     0,   563,     0,
  17484. -     0,  1030,     0,   565,   469,   470,   471,  1171,   472,   473,
  17485. -   474,   475,   476,   477,   478,   479,   480,   481,   482,   483,
  17486. -   484,   485,   486,   487,   488,   489,   490,     0,   384,   384,
  17487. -   384,   478,   479,   480,   481,   482,   483,   484,   485,   486,
  17488. -   487,   488,   489,   490,   613,     0,     0,     0,     0,     0,
  17489. -     0,   623,     0,     0,     0,     0,     0,   307,   519,   309,
  17490. -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  17491. -     0,     0,   151,     0,     0,   428,     0,   774,   776,   473,
  17492. -   474,   475,   476,   477,   478,   479,   480,   481,   482,   483,
  17493. -   484,   485,   486,   487,   488,   489,   490,   670,   673,     0,
  17494. -   422,     0,     0,     0,   149,   149,   149,   149,   846,     0,
  17495. -  1006,     0,   149,   846,   846,   846,     0,     0,   526,     0,
  17496. -     0,     0,     0,     0,     0,     0,     0,     0,   629,   630,
  17497. -     0,   643,     0,     0,     0,     0,     0,     0,     0,     0,
  17498. -   149,     0,     0,     0,     0,     0,     0,     0,     0,   519,
  17499. -     0,   519,     0,     0,     0,     0,     0,     0,     0,     0,
  17500. -     0,     0,   519,     0,     0,     0,   794,   794,   794,     0,
  17501. -   774,   776,     0,     0,   469,   470,   471,     0,   472,   473,
  17502. +    46,   423,   465,   366,   673,   530,   321,    85,   314,   317,
  17503. +    30,   586,    84,   553,    44,    85,    96,   638,   636,   103,
  17504. +   103,   178,   103,   533,   350,   596,   915,   231,    66,   122,
  17505. +    95,    97,   392,   400,   401,   349,   349,   351,   345,   149,
  17506. +   554,    66,   955,   121,   360,  1107,  1212,    85,  1144,   409,
  17507. +  1228,   556,    84,   830,    85,  1108,   502,   346,   502,     8,
  17508. +   502,   164,  1111,   961,    88,   195,    85,   522,  1250,   194,
  17509. +   830,   393,    85,    96,   599,    78,   309,   142,  1257,   651,
  17510. +   424,   614,    85,   460,   165,   166,   290,   285,   286,   670,
  17511. +   149,    85,     8,    85,    78,   309,   103,   194,   461,   307,
  17512. +   103,   670,   420,   103,   103,    75,   100,  1259,    93,   554,
  17513. +   347,   962,   100,  1269,    66,    46,   149,    66,   510,   600,
  17514. +   556,   188,   831,    76,   601,   310,   615,  -699,   300,    44,
  17515. +   426,   616,   361,  -699,   149,   149,   149,    82,  1272,  1295,
  17516. +    73,    93,   100,   777,   310,  1144,  1299,  1089,  1311,  1260,
  17517. +   577,   562,   522,  1033,   329,    93,   671,   602,   276,    21,
  17518. +   149,    93,   693,   100,   617,   187,   709,   164,  1151,   557,
  17519. +   294,   296,   100,   754,   164,   164,  1052,   175,    66,   414,
  17520. +  1067,   276,  1219,   755,   337,   111,   750,    74,   103,   535,
  17521. +  1049,    93,   340,   413,   422,  -103,    75,   756,   164,   327,
  17522. +   751,   384,    -1,   510,    99,   867,   341,   360,   460,   653,
  17523. +    21,   642,    93,   426,    76,   654,   398,  -229,   359,  1272,
  17524. +  1272,    93,   674,   558,   511,    85,   433,   499,  1245,   694,
  17525. +   752,  1048,   311,  1224,   512,    -2,   342,   593,   594,   159,
  17526. +   160,   879,   164,   189,   513,    12,   328,   514,   515,   349,
  17527. +   349,   595,   592,   530,     8,   366,   578,     8,   291,   295,
  17528. +  1304,  -229,  -229,   192,   400,   401,    85,   315,    17,   675,
  17529. +   509,   640,   433,   433,   524,  -224,   360,   510,   314,   317,
  17530. +   149,   100,   192,   194,   424,  -124,  1074,  -230,   880,   870,
  17531. +  1254,   164,   401,  1172,    85,   361,   360,   579,    75,   111,
  17532. +   192,   126,  1305,    93,    21,  1326,   580,  1107,   103,   526,
  17533. +  1098,   103,  1104,  1074,  1107,   103,    76,  1108,   534,    85,
  17534. +    96,   693,   651,  1197,  1108,   189,   301,  1147,    21,   187,
  17535. +    93,  -230,  -230,  1075,    95,    97,  1265,   599,   127,    89,
  17536. +   458,   581,   754,   422,    77,  -225,   192,  1327,  1301,   894,
  17537. +  1074,  1074,   755,   527,   100,   149,    66,   149,   149,   524,
  17538. +  1182,   343,   708,    66,   361,   127,   756,    90,  1107,   149,
  17539. +  1198,   149,  1074,   149,   149,   451,   164,   356,  1108,   811,
  17540. +   149,   551,   600,  1266,   361,  -695,   149,   601,   566,   149,
  17541. +   422,   100,   192,   606,    11,   610,   612,  1276,  1282,     7,
  17542. +     8,    21,    85,    93,   422,   164,   164,  1342,   149,    66,
  17543. +   186,    66,   414,   939,   937,   431,    85,   297,   298,  1321,
  17544. +   602,  -285,   360,    99,   510,   432,   413,  -285,   456,   360,
  17545. +   764,   510,  -699,   164,  -699,  -699,   117,    19,    21,   135,
  17546. +    93,  -699,    85,    85,    85,    85,   660,   385,   386,    22,
  17547. +   551,   387,   511,   499,  1343,   783,   860,   112,   766,   187,
  17548. +  -286,   643,   512,  -699,  -699,  -699,  -286,  -699,   693,  -699,
  17549. +   359,   189,   513,   804,   765,   514,   515,   820,   676,    26,
  17550. +   192,   822,   118,   136,   137,   829,     7,   100,   805,   878,
  17551. +   132,   586,    85,   133,   433,   388,   389,   349,   187,   784,
  17552. +   785,   187,   767,   677,   192,   824,   433,   433,   100,   524,
  17553. +   361,   424,   400,   360,  1180,   530,    66,   361,   553,   360,
  17554. +   692,   821,   178,   695,    19,   823,   366,   465,   701,   702,
  17555. +   703,   704,   705,   533,   651,  1091,    22,   315,   112,   112,
  17556. +   750,   182,   276,   624,    99,   554,   718,   149,    85,   825,
  17557. +   187,  1057,  1208,    84,   751,    21,   556,    93,   189,     7,
  17558. +   503,  1273,   504,   287,   632,   164,    26,   360,   289,   431,
  17559. +   881,   112,   422,   641,   -27,    13,    14,   -27,   747,   432,
  17560. +  -224,     7,     8,   356,   752,   612,     7,     8,   715,   -27,
  17561. +   394,   395,    78,    79,     7,   503,  1209,    19,   149,   149,
  17562. +   842,   361,   318,    75,   -81,  1274,   842,   361,   456,    22,
  17563. +   -81,   456,  -102,   696,   698,   319,   700,    75,   673,    19,
  17564. +  -506,    76,   149,   149,    19,   149,  1077,    13,    14,   356,
  17565. +   192,    22,    19,   240,   456,    76,    22,   234,   722,   505,
  17566. +    21,  -225,    80,    81,    22,    85,   331,    21,   332,   422,
  17567. +  1082,   366,   333,   164,   842,   361,   -80,   322,   426,   159,
  17568. +   160,    26,   -80,   187,   744,    12,    26,     8,   338,    10,
  17569. +   761,   301,   114,   433,    26,    12,   407,   356,   807,   792,
  17570. +    13,    14,   422,   433,   433,   433,  1027,  1028,    17,  1028,
  17571. +    15,   164,   360,   371,    16,   421,   360,   427,    17,   357,
  17572. +    78,    79,   167,   168,   169,   430,   192,   694,   158,   159,
  17573. +   160,    75,   360,   715,    21,    12,    93,   486,   487,   871,
  17574. +  1123,   192,  1072,  1073,   873,   874,   385,  1174,   876,    76,
  17575. +  1053,  1054,   170,  1056,   356,   428,   356,   356,    17,   314,
  17576. +   317,   359,   429,    85,   436,   314,   317,   443,    21,   444,
  17577. +    80,   171,   446,   114,   114,   360,  1153,  1154,   447,   334,
  17578. +   448,   335,   356,   111,   433,   336,   433,   449,   356,   849,
  17579. +  1170,   450,   404,    85,   405,   502,   694,   433,   406,    85,
  17580. +   361,    66,    66,    66,   361,   541,   114,   539,   567,   944,
  17581. +  1184,  1185,   542,   194,   544,   172,   173,   174,   545,    85,
  17582. +   361,    85,   546,    78,   309,  1129,  1130,  1131,   112,   112,
  17583. +   547,   528,     8,   563,   885,   886,   887,   111,   347,   568,
  17584. +  -694,   569,   356,   570,   424,   571,   394,  1175,   385,  1181,
  17585. +   914,   597,   149,   149,   149,   149,   598,  1216,   613,   149,
  17586. +   842,   842,   842,   361,   622,   240,   529,  1336,  1337,    19,
  17587. +   623,   792,   356,   310,   629,    70,   637,    85,   681,    21,
  17588. +   718,    93,   682,    87,   439,   442,   359,   149,  1307,  1308,
  17589. +   103,    98,    66,   414,    85,   104,   104,   686,   104,   422,
  17590. +   422,   687,   422,   706,    70,   707,   551,   413,   483,   484,
  17591. +   485,   486,   487,   100,   709,   104,   184,    70,   762,    13,
  17592. +    14,   763,   776,    87,   778,   591,  -330,   780,   796,   797,
  17593. +    98,   399,   159,   160,   433,   433,   806,   433,    12,   808,
  17594. +   810,   812,    98,   813,   814,   815,   921,  1016,    98,  -330,
  17595. +  -330,   819,  -330,   510,   356,    66,    66,   828,  1193,  1194,
  17596. +    21,    17,    93,  1012,   852,   315,   104,    98,    66,   414,
  17597. +   855,   635,   104,   862,   511,   963,   104,   856,   456,   104,
  17598. +   104,   677,   857,   413,   512,     7,   100,   858,   861,    11,
  17599. +    70,   866,   104,    70,   513,   872,   875,   514,   515,   877,
  17600. +   149,    66,   149,   883,   882,  1156,   888,   889,   898,   642,
  17601. +   104,   104,   104,   356,   149,   149,   892,   149,   315,   691,
  17602. +   164,   893,   895,    19,   315,   111,   356,   896,   356,   694,
  17603. +   897,   899,   900,    21,   901,    22,   104,   456,  1097,   902,
  17604. +  1103,  -101,   905,   114,   114,    66,   414,    24,   904,   907,
  17605. +  1043,  1011,   908,   909,    70,   112,   912,    25,   910,   192,
  17606. +   413,   112,   911,   923,   104,    26,   926,   913,   925,   315,
  17607. +    27,   927,   932,   933,     7,     8,   743,   934,   745,   746,
  17608. +  1227,   938,   356,   948,   356,   830,   356,   942,     8,    92,
  17609. +    10,    11,   554,   943,   354,   945,    12,   314,   317,   956,
  17610. +  1003,    98,   104,  1340,  1125,  1126,  1043,  1005,  1156,   112,
  17611. +   795,    15,    19,  1300,  1009,    16,  1018,   842,  1034,    17,
  17612. +  1036,  1037,    21,  1090,    22,  -471,  1038,   138,  -471,  1039,
  17613. +  1055,  1045,  1059,  1050,  1064,    21,   139,    93,  1051,  1060,
  17614. +  1076,  1061,    98,  1065,  1063,  1068,   140,  1069,   104,   104,
  17615. +    70,   422,   422,  1081,    26,   532,   104,  1070,  1084,   141,
  17616. +  1085,   192,   780,  1086,   817,  1093,  1092,  1088,  1109,  1095,
  17617. +    98,  1156,  1116,  -471,  1117,  1118,  -471,   355,  -471,  1132,
  17618. +  1176,   590,  1122,  1143,   104,  1149,  1148,   104,  -471,  1163,
  17619. +  1167,   104,   842,   842,   842,    98,  1169,  1171,  1199,   422,
  17620. +  1189,  1195,   422,  1196,  1156,  1200,  -471,  -471,  1201,  1213,
  17621. +    98,  -471,  1214,  1207,     8,   644,  1217,  1152,  1202,  1203,
  17622. +  -471,  1225,  1215,  1241,  1261,  1262,  1137,  1138,  1139,  1140,
  17623. +  1251,   104,    70,   104,   104,    70,   149,  1263,  1146,    70,
  17624. +  1264,   645,  1285,  1289,  1267,   104,   646,   104,  1268,   104,
  17625. +   104,  1298,  1074,   164,  1303,  1306,   104,  1341,  1317,   360,
  17626. +  1331,    21,   104,    93,  1309,   104,     8,   863,  1314,  1312,
  17627. +   114,  1161,  1319,  1320,  1252,  1323,   114,  1325,    98,  1168,
  17628. +   849,   458,  1333,  1335,   104,    70,   382,    70,  1344,   112,
  17629. +   112,  1345,    98,   645,  1347,   112,   112,   112,   864,  1346,
  17630. +  1349,  1350,   323,   565,     5,   396,   422,   325,  -699,   950,
  17631. +  -699,  -699,   326,    21,   344,    93,   957,  -699,    98,    98,
  17632. +    98,    98,   305,   710,   114,  1206,  1211,  -699,  1232,  -699,
  17633. +  -699,  1280,   768,  1162,  1100,   917,  -699,   884,  1240,  -699,
  17634. +  -699,   383,  1132,  -699,   949,  -699,    85,   361,   928,   827,
  17635. +   929,   123,   124,  1218,  1013,   865,   315,   111,  -699,  -699,
  17636. +   397,   953,  -699,   356,  -699,  1030,  1066,    86,    98,   456,
  17637. +   104,    48,   668,   749,  1218,  1218,  1029,   187,     8,    92,
  17638. +    10,    11,   104,   104,  1339,    70,    12,    48,   799,   947,
  17639. +  1296,   998,   794,  1316,  1318,     0,   187,   488,  1032,  1218,
  17640. +    48,    15,   620,   532,   958,    16,   959,     0,   960,    17,
  17641. +     0,   655,   656,   154,   479,   480,   481,   482,   483,   484,
  17642. +   485,   486,   487,   104,    87,    21,   185,    93,     0,     0,
  17643. +     0,     0,     0,   551,   489,   490,     0,     0,   229,   491,
  17644. +   492,   493,   494,   278,    48,     0,     0,     0,     0,    19,
  17645. +     0,     0,   657,     0,     0,   278,   278,     0,     0,    21,
  17646. +   356,    22,   853,   154,  1297,     0,   278,     0,   658,     0,
  17647. +     0,     0,     0,   139,   104,   104,    70,     0,     0,     0,
  17648. +   722,   722,   794,   140,     0,     0,    48,     0,     0,   154,
  17649. +     0,    26,     0,  1315,     0,     0,   659,     0,   104,   104,
  17650. +     0,   104,     0,   363,   114,   114,     0,     0,     0,     0,
  17651. +   114,   114,   114,     0,     0,     0,     8,    92,    10,    11,
  17652. +     0,    98,     0,     0,    12,     0,   356,     0,     7,     8,
  17653. +    70,     0,    11,   375,   377,   380,   228,     0,     0,    15,
  17654. +     0,   277,     0,    16,     0,     0,     0,    17,     0,   104,
  17655. +    48,     0,   112,   277,   277,     0,     0,     0,     0,   104,
  17656. +   104,   104,     0,    21,   277,    93,    19,     0,     0,   510,
  17657. +     0,     0,     0,     0,     0,     0,    21,     0,    22,     0,
  17658. +     0,    94,     0,     0,     0,     0,   452,   101,   105,   453,
  17659. +   603,   916,   454,     0,     0,     0,     0,   185,   462,     0,
  17660. +   604,   362,     0,     0,     0,     0,     0,   501,    26,     0,
  17661. +   513,     0,     0,   605,   515,     0,     0,     0,     0,    98,
  17662. +     0,     0,     0,     0,     0,   278,     0,   112,   112,   112,
  17663. +     0,     0,     0,     8,   230,    10,   184,     0,   229,   279,
  17664. +   104,    12,   104,     0,     0,     0,   185,     0,   952,    98,
  17665. +     0,   279,   279,   104,     0,    98,    15,   794,   794,   794,
  17666. +    16,     0,   279,     0,    17,   532,   552,     0,     0,     0,
  17667. +     0,   313,   316,     0,     0,    98,     0,    98,     0,     0,
  17668. +    21,     0,    93,     0,     0,     0,     0,     0,   816,     0,
  17669. +    98,    48,  1004,     0,     0,     0,     0,     0,     0,   364,
  17670. +     0,     0,   374,   376,     0,     0,     0,     0,   104,   104,
  17671. +   104,   104,     0,     0,     0,   104,   794,   794,   794,     0,
  17672. +     0,     0,     0,   277,     0,     0,     0,     0,   154,     0,
  17673. +     0,   185,     0,    98,     0,   552,   228,     0,     0,     0,
  17674. +     0,     0,   854,   104,  1041,  1044,   104,     0,    70,     0,
  17675. +    98,     0,     0,   859,     0,   363,   481,   482,   483,   484,
  17676. +   485,   486,   487,     0,   362,     0,     0,   114,   625,     0,
  17677. +   626,   193,   375,   377,     0,     0,     0,     0,     0,     0,
  17678. +   699,   154,  1243,    48,     0,   639,     0,     0,   678,     0,
  17679. +   104,   104,     0,   104,     0,     0,     0,     7,     8,     0,
  17680. +     0,  1044,     0,     0,     0,   278,     0,   665,   278,     0,
  17681. +     0,   794,   794,   278,   678,   678,   678,   678,   320,     0,
  17682. +     0,   279,     0,     0,    70,     0,     0,   278,     0,     0,
  17683. +     0,   278,     0,   362,   230,    19,     0,   352,   510,     0,
  17684. +     0,     0,   114,   114,   114,    21,     0,    22,  1294,     0,
  17685. +     0,     0,   391,   362,     0,     0,   104,    70,   104,   603,
  17686. +     0,     0,   364,   278,   229,     0,     0,     0,     0,   604,
  17687. +   104,   104,     0,   104,     0,  1136,     0,    26,     0,   513,
  17688. +  1141,   552,   605,   515,     0,     0,   277,     0,   363,     0,
  17689. +     0,     0,     0,     0,     6,     0,     7,     8,     9,    10,
  17690. +    11,    70,     0,   277,     0,    12,   277,     0,     0,     0,
  17691. +     0,   277,   277,   277,   277,   277,     0,     0,    13,    14,
  17692. +    15,     0,   954,     0,    16,   277,     0,     0,    17,   277,
  17693. +     0,   364,    18,     0,    19,     0,     0,     0,    20,     0,
  17694. +     0,   627,   628,     0,    21,     0,    22,     0,     0,    23,
  17695. +     0,   364,     0,     0,  1186,  1187,     0,     0,    24,     0,
  17696. +     0,   277,   228,     0,     0,     0,     0,     0,    25,     0,
  17697. +     0,  1010,   552,   794,     0,     0,    26,     0,   363,   362,
  17698. +  1017,    27,     0,  1205,   279,     0,   362,    28,    29,  1031,
  17699. +     0,     0,     0,     7,     8,     0,     0,   375,   377,   380,
  17700. +     0,   279,     0,     0,   279,   380,     0,     0,     0,   279,
  17701. +   279,   279,   279,   279,     0,     0,     0,     0,  -511,     0,
  17702. +     0,   625,   626,   279,   639,     0,   552,   279,  1233,     0,
  17703. +     0,    19,     0,  -511,  -511,  1238,  1239,     0,     0,     0,
  17704. +  -511,    21,     0,    22,  1244,     0,  1096,     0,   794,   794,
  17705. +   794,     0,  -511,   380,     0,   139,     0,     0,     0,   279,
  17706. +   230,     0,     0,  -511,  -511,   140,  -511,     0,  -511,   100,
  17707. +   362,     0,   424,    26,   769,   771,   362,   364,   141,     0,
  17708. +     0,     0,     0,   630,   364,     0,     0,     0,     0,   633,
  17709. +     0,     0,   104,     0,     0,   924,  -511,  -511,     0,     0,
  17710. +  -511,  -511,     0,  1292,  1293,     0,     0,     0,     0,   510,
  17711. +  -511,     0,     0,     0,     0,   678,    21,     0,    93,   918,
  17712. +     0,   452,   453,     0,   362,  1119,  1120,     0,     0,     0,
  17713. +   511,     0,     0,   688,   689,     0,   690,     0,  1127,  1128,
  17714. +   512,     0,     0,     0,     0,   678,     0,     0,     0,     0,
  17715. +   513,   552,     0,   514,   515,   363,     8,    92,    10,    11,
  17716. +     0,     0,     0,     0,    12,     0,   837,   838,   364,     0,
  17717. +  1338,   552,     0,   951,   364,     0,     0,     0,     0,    15,
  17718. +   452,   453,     0,    16,     0,     0,     0,    17,     0,     0,
  17719. +     0,     0,     0,     0,     0,     0,     0,     0,     0,   987,
  17720. +     0,     0,    98,    21,     0,    93,     0,     0,   519,   523,
  17721. +   525,     0,     0,   277,   363,     0,     0,     0,     0,   781,
  17722. +   782,     0,   364,     0,   781,   452,   453,     0,   278,     0,
  17723. +     0,   625,   626,   375,   377,  1192,     7,   100,   639,   375,
  17724. +   377,   380,     0,   277,    48,     0,   678,     0,     0,   362,
  17725. +     0,     0,     0,   362,     0,     0,     0,     0,     0,     0,
  17726. +  1058,     0,     0,     0,     0,     0,  1025,     0,     0,   362,
  17727. +     0,     0,     0,     0,    19,   452,   453,     0,     0,     0,
  17728. +     0,     0,     0,     0,    21,     0,    22,     0,     0,     0,
  17729. +     0,   608,     0,   519,   523,   525,     0,     0,   108,   835,
  17730. +   836,  1234,  1235,     0,  1236,  1237,     0,     0,   109,   844,
  17731. +     0,   279,   362,     0,     0,   851,    26,     0,     0,     0,
  17732. +    48,    27,     0,     0,     0,     0,   277,     0,     0,     0,
  17733. +     0,   410,     0,     7,     8,    92,    10,    11,     0,     0,
  17734. +     0,   279,    12,     0,   277,     0,     0,   364,     0,   769,
  17735. +   771,   364,     0,   154,     0,   987,     0,    15,     0,   868,
  17736. +     0,    16,   987,     0,     0,    17,  -423,   364,     0,     7,
  17737. +   100,    19,     0,   184,     0,     0,     0,     0,     7,   100,
  17738. +     0,    21,    11,    22,     0,     0,   672,     0,     0,     0,
  17739. +   411,     0,     0,   625,   626,    24,   639,    48,     0,     0,
  17740. +     0,     0,   999,  1000,   268,    25,     0,    19,   999,  1000,
  17741. +   364,  1313,     0,    26,     0,     0,    19,    21,    27,    22,
  17742. +     0,     0,     0,     0,   279,     0,    21,   268,    22,     0,
  17743. +     0,    24,     0,  -423,     0,     0,     0,     0,  1019,  1020,
  17744. +   108,    25,   279,   772,     0,   774,     0,     0,   987,    26,
  17745. +   109,     0,   774,     0,    27,     0,   919,   920,    26,   922,
  17746. +     0,     0,     0,    27,   358,     0,     0,   410,     0,     7,
  17747. +     8,    92,    10,    11,     0,     0,    19,     0,    12,     0,
  17748. +     0,     0,     0,   523,     0,   936,    21,     0,    22,     0,
  17749. +     0,     0,     0,    15,     0,  1021,   380,    16,     0,     0,
  17750. +   139,    17,  -422,   769,   771,     0,     0,    19,     0,     0,
  17751. +   140,     0,   452,   453,     0,     0,     0,    21,    26,    22,
  17752. +     0,     0,   987,   141,     0,     0,   411,     0,     0,     0,
  17753. +  1220,    24,     0,   987,     0,   772,   774,     0,     0,     0,
  17754. +     0,    25,   774,     0,     0,  1002,   278,     0,     0,    26,
  17755. +     0,  1220,  1220,     0,    27,     0,     0,  1006,  1007,  1008,
  17756. +     0,     0,     0,     0,     0,     0,     0,     0,     0,  -422,
  17757. +     0,   375,   377,   380,     0,     0,  1220,     0,     0,     0,
  17758. +     0,     0,     0,   987,     0,     0,     0,   459,     0,     0,
  17759. +   987,     0,     8,   987,    10,    11,     0,     0,     0,     0,
  17760. +    12,     0,     0,     0,     7,     8,   158,   159,   160,   523,
  17761. +     0,     0,     0,    12,   987,    15,     0,   987,     0,    16,
  17762. +     0,     0,     0,    17,   987,     0,     0,   410,   228,     7,
  17763. +     8,    92,    10,    11,     0,  1062,    17,     0,    12,    21,
  17764. +     0,    93,    19,     0,   277,   510,     0,     0,   987,   228,
  17765. +   228,     0,    21,    15,    22,     0,     0,    16,     0,     0,
  17766. +     0,    17,  -424,   987,     0,     0,   139,    19,     0,   589,
  17767. +   358,     0,     0,     0,   228,     0,   140,    21,   987,    22,
  17768. +     0,     0,   672,     0,    26,     0,   411,     0,     0,  1102,
  17769. +     0,    24,     0,     0,     0,   987,   987,     0,   552,     0,
  17770. +   930,    25,   931,     0,     0,     0,     0,     0,     0,    26,
  17771. +     0,     0,     0,   935,    27,     0,   358,     0,   772,   774,
  17772. +  1121,     0,     0,     0,     0,     0,   230,     0,     0,  -424,
  17773. +     0,     0,     0,     0,     0,     8,     0,    10,    11,   652,
  17774. +   627,   628,   279,    12,     0,     0,     0,   230,   230,     0,
  17775. +     0,     0,     0,     0,     0,     0,     0,     0,    15,     0,
  17776. +     0,     0,    16,     0,   358,  1150,    17,     0,   930,   931,
  17777. +     0,   772,   230,     0,     0,   935,     0,   772,   774,     7,
  17778. +     8,     0,    21,   184,    93,   495,     0,     0,   268,     0,
  17779. +     0,   589,     0,     0,   719,   720,   362,   724,   725,   726,
  17780. +   727,   728,   729,   730,   731,   732,   733,   734,   735,   736,
  17781. +   737,   738,   739,   740,   741,   742,     0,    19,     0,   496,
  17782. +   510,   358,     0,   358,   358,     0,     0,    21,     0,    22,
  17783. +     7,     8,    92,    10,    11,     0,     0,   354,     0,    12,
  17784. +     0,   603,   100,     0,   159,   160,     0,     0,     0,   358,
  17785. +    12,   604,     0,     0,    15,   358,    42,     0,    16,    26,
  17786. +     0,   513,    17,     0,   605,   515,     0,     0,    19,     0,
  17787. +   801,   803,   772,    17,     0,     0,    42,    42,    21,   110,
  17788. +    22,     0,   510,     0,     0,    42,     0,     0,     0,    21,
  17789. +     0,    93,   378,     0,   364,     0,    42,     0,    42,     0,
  17790. +     0,     0,   379,   511,     0,     0,     0,     0,     0,   358,
  17791. +    26,     0,     0,   512,     0,   141,   589,     0,   190,     0,
  17792. +   355,     0,     0,   513,     0,     0,   521,   515,     0,     0,
  17793. +   930,   931,     6,   935,     7,     8,     9,    10,    11,   358,
  17794. +     0,     0,     0,    12,     0,     0,     0,    42,     0,     0,
  17795. +   589,     0,     0,    42,     0,   190,     0,    42,    15,     0,
  17796. +   110,   110,    16,     0,     0,     0,    17,     0,     0,     0,
  17797. +     0,    42,    19,    42,    42,     0,   324,     0,     0,     0,
  17798. +     0,     0,    21,     0,    22,     0,   869,    23,     0,     0,
  17799. +     0,    42,    42,   110,     0,     0,    24,     0,     0,     0,
  17800. +     0,   190,     0,     0,     0,     0,    25,     0,     0,     0,
  17801. +     0,     0,     0,     0,    26,     0,     0,    42,     0,    27,
  17802. +     0,   358,     0,     0,     0,    28,   721,     0,     7,     8,
  17803. +     0,    10,   437,   233,   234,    42,   235,    12,     0,     0,
  17804. +     0,     0,   903,     0,     0,    42,     0,     0,     0,     0,
  17805. +     0,     0,    15,   236,   237,   238,    16,     0,   239,     0,
  17806. +    17,     0,   240,   241,     0,   242,    19,   243,   244,     0,
  17807. +     0,   245,   246,   247,   248,   249,    21,     0,    22,   589,
  17808. +   358,     0,     0,     0,     0,  -656,     0,   250,     0,     0,
  17809. +   251,     0,     0,   358,     0,   358,     0,     0,   252,   253,
  17810. +   254,     0,     0,     0,     0,     0,   255,   256,   257,     0,
  17811. +     0,     0,     0,   258,     0,     0,     0,   259,     0,     0,
  17812. +     0,     0,     0,     0,   946,     0,     0,   506,     0,   260,
  17813. +     0,     0,     0,     0,     0,   190,   589,    42,     0,     7,
  17814. +     8,     0,    10,   437,   233,   234,     0,   235,    12,   358,
  17815. +     0,   358,     0,   358,     0,     0,     0,     0,     0,     0,
  17816. +     0,     0,     0,    15,   236,    42,     0,    16,    42,   239,
  17817. +     0,    17,    42,   240,   241,     0,   242,    19,   243,   244,
  17818. +   589,     0,   245,   246,   247,   248,   249,    21,     0,    22,
  17819. +     0,     0,     0,     0,  1014,  1015,     0,     0,   250,     0,
  17820. +     0,   251,     0,     0,     0,     0,     0,  1019,   100,   252,
  17821. +   253,   254,    42,    42,    42,    42,     0,   255,   256,   257,
  17822. +    42,     0,     0,     0,   438,     0,    42,     0,    42,     0,
  17823. +   110,   110,   589,   589,     0,     0,  1046,    42,     0,     0,
  17824. +   260,     0,     0,    42,     0,    19,    42,     0,   410,     0,
  17825. +     7,     8,    92,    10,    11,    21,     0,    22,     0,    12,
  17826. +     0,     7,     8,     0,  1021,    42,    42,     0,    42,    24,
  17827. +     0,     0,     0,     0,    15,     0,     0,     0,    16,    25,
  17828. +     0,     0,    17,  -425,     0,     0,     0,    26,    19,   589,
  17829. +     0,     0,    27,     0,     0,     0,     0,    64,    21,    19,
  17830. +    22,  1083,     0,     0,     7,     8,     0,   411,    11,    21,
  17831. +     0,    22,    24,     0,     0,     0,     0,    64,    64,     0,
  17832. +   115,     0,    25,   139,     0,     0,    64,     0,     0,     0,
  17833. +    26,     0,     0,   140,     0,    27,     0,    64,     0,    64,
  17834. +     0,    26,    19,     0,     0,   510,   141,     0,     0,  1124,
  17835. +  -425,     0,    21,     0,    22,     7,     8,    92,    10,    11,
  17836. +     0,   506,   354,   589,    12,     0,   839,     0,   589,     0,
  17837. +  1142,     0,     0,   791,     0,     0,   840,     0,     0,    15,
  17838. +     0,     0,     0,    16,    26,     0,   513,    17,    64,   605,
  17839. +   515,     0,     0,    19,    64,     0,   510,     0,    64,     0,
  17840. +     0,   115,   115,    21,    42,    22,     0,     0,     0,     0,
  17841. +     0,     0,    64,     0,    64,    64,     0,   839,     0,     0,
  17842. +     0,     8,     0,    10,    11,     0,     0,   840,     0,    12,
  17843. +   358,     0,    64,    64,   115,    26,     0,   513,     0,     0,
  17844. +   605,   515,   589,   589,    15,   355,     0,     0,    16,     0,
  17845. +  1190,  1191,    17,     0,     0,    42,    42,   110,    64,     0,
  17846. +     0,     0,     0,   848,     0,     0,     0,     0,    21,     0,
  17847. +    93,   589,     0,     0,     0,     0,    64,     0,     0,    42,
  17848. +    42,     0,    42,     0,     0,     0,    64,     0,     0,     0,
  17849. +     0,     0,  1222,   476,   477,   478,   479,   480,   481,   482,
  17850. +   483,   484,   485,   486,   487,   748,     0,   587,     0,   711,
  17851. +   712,   110,    10,   437,   233,   234,   589,   235,    12,     0,
  17852. +     0,     0,     0,   589,   589,     0,     0,   358,     0,     0,
  17853. +     0,     0,   589,    15,   236,   237,   238,    16,     0,   239,
  17854. +     0,    17,     0,   240,   241,   791,   242,    19,   243,   244,
  17855. +     0,     0,   245,   246,   247,   248,   249,    21,     0,   713,
  17856. +   588,     0,     0,     0,     7,     8,     0,     0,   250,     0,
  17857. +     0,   251,     0,     0,     0,     0,     0,   531,    64,   252,
  17858. +   253,   254,     0,     0,     0,     0,     0,   255,   256,   257,
  17859. +     0,   589,   589,   358,   258,   714,     0,     0,   259,     0,
  17860. +     0,     0,    19,     0,     0,     0,    64,     0,     0,    64,
  17861. +   260,     0,    21,    64,    22,     0,     0,     0,     0,     0,
  17862. +   116,     0,     0,     0,     0,     0,   378,     0,     0,     0,
  17863. +     0,     0,   585,     0,     0,     0,   379,   150,   791,   791,
  17864. +     0,     0,     0,     0,    26,     0,     0,     0,     0,   141,
  17865. +     0,     0,     0,    64,    64,    64,    64,     0,   589,     0,
  17866. +     0,    64,     0,     0,     0,     0,     0,    64,     0,    64,
  17867. +     0,   115,   115,     0,     0,     0,     0,     0,    64,     0,
  17868. +     0,     0,     0,     0,    64,     0,     0,    64,   150,    42,
  17869. +    42,   110,   110,     0,   190,     0,    42,   848,   848,   848,
  17870. +     0,   116,   116,     0,     0,     0,    64,    64,     0,    64,
  17871. +     0,     0,     0,     0,   150,     0,     0,     0,     0,     0,
  17872. +     0,     0,     0,     0,    42,     0,     0,    42,     0,    42,
  17873. +     0,     0,   150,   150,   381,     0,     0,     0,     0,     0,
  17874. +     0,     0,   791,   791,     0,  1105,     0,   966,   967,    92,
  17875. +    10,   232,   233,   234,     0,   235,    12,   968,   150,   969,
  17876. +   970,   971,   972,   973,   974,   975,   976,   977,   978,    13,
  17877. +    14,    15,   236,   237,   238,    16,     0,   239,     0,    17,
  17878. +     0,   240,   241,     0,   242,    19,   243,   244,     0,     0,
  17879. +   245,   246,   247,   248,   249,    21,   190,   979,   347,     0,
  17880. +   980,     0,     0,     0,     0,    42,   250,     0,     0,   251,
  17881. +     0,     0,     0,     0,   793,     0,     0,   252,   253,   254,
  17882. +     0,     0,     0,     0,   434,   255,   256,   257,     0,     0,
  17883. +     0,     0,   258,     0,   981,     0,   259,    42,    42,    42,
  17884. +     0,     0,     0,     0,     0,    64,     0,  1106,   260,     0,
  17885. +     0,    42,    42,     0,    42,     7,     8,     0,     0,    11,
  17886. +     0,     8,    92,    10,    11,     0,     0,   354,     0,    12,
  17887. +   518,   518,   518,     0,     0,     0,     0,     0,   150,     0,
  17888. +     0,     0,    42,     0,    15,     0,     0,     0,    16,     0,
  17889. +     0,     0,    17,    19,     0,     0,    64,    64,   115,     0,
  17890. +     0,   510,     0,    21,   850,    22,     0,     0,    21,     0,
  17891. +    93,     0,     0,     0,     0,     0,     0,   139,     0,     0,
  17892. +    64,    64,   511,    64,     0,     0,     0,   140,     0,     0,
  17893. +     0,     0,   512,     0,     0,    26,     0,     0,     0,     0,
  17894. +   141,     0,   513,     0,     0,   514,   515,     0,     0,     0,
  17895. +   355,     0,   115,   607,   848,   607,   607,   518,     0,   120,
  17896. +     0,     7,     8,    92,    10,    11,     0,   150,     0,   150,
  17897. +    12,   381,   381,     0,     0,     0,     7,     8,   150,     0,
  17898. +   424,   516,   516,   516,   150,    15,   793,   150,     0,    16,
  17899. +     0,     0,     0,    17,     0,     0,     0,     0,   148,    19,
  17900. +     0,     0,     0,     0,     0,     0,   150,     0,     0,    21,
  17901. +     0,    22,     0,     0,    19,     0,     0,   510,     0,     0,
  17902. +   191,     0,     0,    24,    21,     0,    22,     0,     0,   848,
  17903. +   848,   848,     0,    25,     0,     0,     7,   100,   603,   191,
  17904. +   424,    26,     0,     0,     0,     0,    27,     0,   604,   148,
  17905. +     0,     0,     0,     0,     0,     0,    26,     0,   513,     0,
  17906. +     0,   605,   515,     0,   516,     0,   516,   516,   516,     0,
  17907. +     0,     0,     0,    42,    19,   148,     0,     0,     0,   793,
  17908. +   793,     0,     0,     0,    21,     0,    22,   531,     0,     0,
  17909. +     0,     0,   757,   148,   148,   148,     0,     0,    24,     0,
  17910. +     0,     0,     0,   390,   518,   518,     0,   518,    25,     0,
  17911. +     0,     0,   585,     0,   518,     0,    26,     0,     0,   148,
  17912. +     0,    27,     0,     0,     0,     0,     0,     0,     0,     0,
  17913. +    64,    64,   115,   115,     0,     0,     0,    64,   850,   850,
  17914. +   850,     0,     0,     0,     0,   607,     0,     0,     0,   191,
  17915. +     0,     0,    62,     0,     0,     0,     0,     0,     0,     0,
  17916. +     0,     0,     0,     0,     0,    64,     0,     0,    64,     0,
  17917. +    64,     0,   102,   106,     0,     0,     0,   100,     0,   159,
  17918. +   160,   125,     0,   793,   793,    12,     0,     0,     0,     0,
  17919. +     0,     0,     0,     0,   157,     0,   607,   607,   843,     0,
  17920. +     0,     0,     0,     0,   843,     0,     0,     0,    17,     0,
  17921. +     0,     0,     0,     0,     0,   516,   516,   510,   516,     0,
  17922. +   150,   150,     0,   150,    21,   790,    93,     0,     8,   151,
  17923. +    10,   152,     0,     0,     0,     0,    12,   191,   511,   148,
  17924. +     0,     0,     0,     0,     0,     0,    64,     0,   512,   306,
  17925. +     0,    15,   381,   308,     0,    16,   516,     0,   513,    17,
  17926. +     0,   514,   515,     0,     0,     0,     0,    62,     0,     0,
  17927. +   330,   518,     7,     8,     0,    21,   184,    93,    64,    64,
  17928. +    64,   434,   434,   434,     0,     0,     0,   102,   106,     0,
  17929. +     0,     0,    64,    64,     0,    64,     0,     0,     0,     0,
  17930. +     0,     0,     0,     0,     0,     0,     0,   516,   516,   516,
  17931. +    19,     0,     0,     0,   148,   790,   148,   148,     0,     0,
  17932. +    21,     0,    22,    64,     0,     0,     0,     0,   148,     0,
  17933. +   148,   419,   148,   148,   139,     0,     7,     8,     0,   148,
  17934. +    11,   425,     0,     0,   140,   148,     0,     0,   148,     0,
  17935. +     0,     0,    26,     0,     0,     0,    83,   141,     0,     0,
  17936. +     0,     0,   518,     0,   518,     0,     0,   148,    83,    83,
  17937. +     0,    83,     0,     0,    19,   518,     0,     0,     0,   518,
  17938. +   518,   518,   516,     0,    21,     0,    22,     0,     0,     0,
  17939. +     0,     0,     0,     0,     0,   850,   177,     0,   378,     0,
  17940. +     0,     0,     0,     0,     0,     0,     0,     0,   379,     0,
  17941. +     0,     0,     0,     0,     0,     0,    26,     0,     0,     0,
  17942. +     0,   141,     0,     0,     0,     0,     0,     0,     0,     0,
  17943. +   607,   607,   843,   843,     0,     0,     0,   607,   843,   843,
  17944. +   843,     0,     0,     0,     0,    83,     0,    83,    83,    83,
  17945. +     0,     0,    83,    83,     0,     7,     8,     0,     0,   424,
  17946. +     0,   559,     0,     0,   560,   150,     0,     0,   561,     0,
  17947. +   850,   850,   850,   516,     0,   516,     0,     0,   191,     0,
  17948. +     0,     0,     0,     0,     0,     0,   516,     0,     0,     0,
  17949. +   790,   790,   790,    19,     0,     0,     0,     0,     0,     0,
  17950. +     0,     0,     0,    21,     0,    22,   148,     0,     0,   609,
  17951. +     0,     0,   757,   757,    64,   757,   619,   139,     0,     0,
  17952. +     0,     0,   306,     0,   308,     0,     0,   140,     0,     0,
  17953. +     0,     0,     0,   518,   518,    26,     0,    83,     0,   425,
  17954. +   141,   516,   516,   516,   516,     0,     0,     0,   516,   790,
  17955. +   790,   790,     0,     0,     0,     0,     0,   148,   148,   841,
  17956. +     0,   666,   669,     0,   419,   841,     0,     0,     0,     0,
  17957. +  -304,     8,  -304,    10,   184,    83,     0,     0,   150,    12,
  17958. +   150,   148,   148,     0,   148,     0,     0,     0,     0,     0,
  17959. +     0,     0,   607,   607,    15,   607,     0,     0,    16,     0,
  17960. +     0,     0,    17,     0,     0,     0,     0,     0,  -304,     0,
  17961. +     0,   510,     0,   841,     0,     0,     0,     0,    21,    83,
  17962. +    93,    83,    83,     0,     0,     0,     0,     0,     0,     0,
  17963. +     0,     0,   511,     0,     0,     0,     0,     0,     0,     0,
  17964. +     0,     0,   512,     0,   790,   790,     0,     0,     0,     0,
  17965. +  -304,    83,   513,     0,     0,   514,   515,    83,     0,     0,
  17966. +    83,     0,     0,     0,    83,   471,   472,   473,   474,   475,
  17967. +   476,   477,   478,   479,   480,   481,   482,   483,   484,   485,
  17968. +   486,   487,   353,     0,     7,     8,    92,    10,   232,   233,
  17969. +   234,   354,   235,    12,     0,   381,     0,     0,     0,     0,
  17970. +     0,     0,     0,   516,   516,     0,   516,     0,    15,   236,
  17971. +   237,   238,    16,     0,   239,     0,    17,     0,   240,   241,
  17972. +     0,   242,    19,   243,   244,     0,     0,   245,   246,   247,
  17973. +   248,   249,    21,     0,    22,     0,     0,     0,     0,     0,
  17974. +     0,     0,     0,   250,     0,     0,   251,     0,     0,     0,
  17975. +     0,   102,   106,     0,   252,   253,   254,     0,     0,     0,
  17976. +     0,     0,   255,   256,   257,     0,     0,     0,     0,   258,
  17977. +   381,   381,   381,   259,   355,   559,   560,    83,   561,     0,
  17978. +     0,     0,     0,  -666,     0,   260,     0,     0,     0,     0,
  17979. +     0,   148,   148,   148,   148,     0,  1001,     0,   148,   841,
  17980. +   841,   841,     0,     0,     0,     0,     0,     0,     0,     0,
  17981. +     0,     0,     0,     0,   150,     0,     0,     0,     0,     0,
  17982. +     0,     0,     0,     0,     0,     0,   148,     0,     0,     0,
  17983. +     0,   455,     0,     7,     8,    92,    10,   232,   233,   234,
  17984. +   354,   235,    12,    83,     0,     0,     0,     0,     0,     0,
  17985. +     0,     0,     0,    83,     0,    83,    83,    15,   236,   237,
  17986. +   238,    16,     0,   239,     0,    17,     0,   240,   241,     0,
  17987. +   242,    19,   243,   244,   510,     0,   245,   246,   247,   248,
  17988. +   249,    21,     0,    22,  -237,     0,     0,     0,     0,     0,
  17989. +     0,     0,   250,     0,     0,   940,     0,   177,   191,     0,
  17990. +     0,     0,     0,   252,   253,   941,     0,     0,     0,     0,
  17991. +     0,   255,   256,   257,     0,   513,     0,     0,   788,   515,
  17992. +     0,     0,   259,   355,     0,     0,     7,     8,   158,   159,
  17993. +   160,     0,     0,     0,   260,    12,     0,     0,     0,   148,
  17994. +     0,   148,     0,     0,     0,     0,     0,     0,     0,     0,
  17995. +     0,     0,     0,   148,   148,     0,   148,     0,    17,     0,
  17996. +     0,     0,     0,     0,    19,     0,     0,   510,     0,     0,
  17997. +     0,     0,     0,     0,    21,     0,    22,     0,     0,     0,
  17998. +     0,     0,     0,     0,     0,   306,   308,     0,   603,     0,
  17999. +     0,     0,   425,     0,     0,     0,     0,     0,   604,     0,
  18000. +     0,     0,     0,     0,     0,     0,    26,     0,   513,     0,
  18001. +     0,   611,   515,     0,     0,     0,     0,     0,     0,     0,
  18002. +  1026,     0,    83,  1026,     0,   419,     0,     0,     0,     0,
  18003. +     0,     0,    83,    83,    83,     0,   455,     0,     7,     8,
  18004. +    92,    10,   232,   233,   234,   354,   235,    12,     0,     0,
  18005. +     0,     0,     0,     0,     0,     0,   841,     0,     0,     0,
  18006. +     0,     0,    15,   236,   237,   238,    16,     0,   239,     0,
  18007. +    17,     0,   240,   241,     0,   242,    19,   243,   244,   510,
  18008. +     0,   245,   246,   247,   248,   249,    21,     0,    22,  -237,
  18009. +     0,     0,     0,     0,     0,     0,     0,   250,     0,     0,
  18010. +   845,   419,     0,     0,  1164,     0,     0,     0,   252,   253,
  18011. +   846,     0,     0,    83,     0,    83,   255,   256,   257,     0,
  18012. +   513,     0,     0,   847,   515,     0,    83,   259,   355,     0,
  18013. +     0,   841,   841,   841,  1101,     0,     0,     0,     0,   260,
  18014. +     0,     0,     0,     0,     0,     0,     0,   559,   560,     0,
  18015. +   561,   466,   467,   468,  1165,   469,   470,   471,   472,   473,
  18016.     474,   475,   476,   477,   478,   479,   480,   481,   482,   483,
  18017. -   484,   485,   486,   487,   488,   489,   490,   476,   477,   478,
  18018. -   479,   480,   481,   482,   483,   484,   485,   486,   487,   488,
  18019. -   489,   490,   192,     0,     0,     0,     0,   519,   519,   519,
  18020. -   519,   519,  1045,     0,     0,   519,   794,   794,   794,     0,
  18021. -     0,     0,   383,     0,     7,     8,    92,    10,    11,     0,
  18022. -     0,   356,     0,    12,     0,   526,     0,     0,     0,     0,
  18023. -     0,     0,     0,   149,     0,   149,     0,     0,    15,     0,
  18024. -     0,     0,    16,     0,     0,     0,    17,   149,   149,     0,
  18025. -   149,     0,    19,     0,     0,   513,     0,     0,     0,     0,
  18026. -     0,     0,    21,     0,    22,     0,     0,     0,   102,   106,
  18027. -     0,     0,     0,     0,     0,     0,   843,     0,     0,     0,
  18028. -     0,     0,     0,     0,     0,     0,   844,   377,   379,   383,
  18029. -     0,     0,   562,   563,    26,   565,   516,     0,     0,   845,
  18030. -   518,     0,     0,     0,   357,     0,     0,     0,     0,     0,
  18031. -     0,     0,     0,     0,     0,     0,   936,     0,   937,     0,
  18032. -     0,     0,     0,     0,     0,     0,     0,     0,     0,   941,
  18033. -     0,     0,     0,   774,   776,   475,   476,   477,   478,   479,
  18034. -   480,   481,   482,   483,   484,   485,   486,   487,   488,   489,
  18035. -   490,   846,     0,     0,     0,     0,     0,     0,     0,     0,
  18036. -   519,   519,     0,   519,     0,     0,     0,     0,     0,     0,
  18037. -   686,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18038. -     0,     0,     0,     0,   936,   937,   774,   776,     0,     0,
  18039. -     0,     0,   941,   774,   776,   469,   470,   471,     0,   472,
  18040. -   473,   474,   475,   476,   477,   478,   479,   480,   481,   482,
  18041. -   483,   484,   485,   486,   487,   488,   489,   490,     0,     0,
  18042. -     0,     0,     0,     0,     0,     0,   846,   846,   846,     0,
  18043. -     0,     0,  1111,     0,   971,   972,    92,    10,   233,   234,
  18044. -   235,     0,   236,    12,   973,     0,   974,   975,   976,   977,
  18045. -   978,   979,   980,   981,   982,   983,    13,    14,    15,   237,
  18046. -   238,   239,    16,     0,   240,     0,    17,     0,   241,   242,
  18047. -   149,   243,    19,   244,   245,     0,     0,   246,   247,   248,
  18048. -   249,   250,    21,     0,   984,   349,     0,   985,     0,     0,
  18049. -     0,     0,     0,   251,     0,     0,   252,     0,     0,     0,
  18050. -     0,     0,   307,   309,   253,   254,   255,     0,     0,     0,
  18051. -   428,     0,   256,   257,   258,     0,     0,     0,     0,   259,
  18052. -     0,   986,     0,   260,     0,     0,     0,     0,     0,     0,
  18053. -     0,     0,     0,     0,  1112,   261,     0,     0,  1031,     0,
  18054. -     0,  1031,     0,   422,     0,     0,     0,   936,   937,     0,
  18055. -   941,  1261,     0,   971,   972,    92,    10,   233,   234,   235,
  18056. -     0,   236,    12,   973,     0,   974,   975,   976,   977,   978,
  18057. -   979,   980,   981,   982,   983,    13,    14,    15,   237,   238,
  18058. -   239,    16,     0,   240,     0,    17,     0,   241,   242,     0,
  18059. -   243,    19,   244,   245,     0,     0,   246,   247,   248,   249,
  18060. -   250,    21,     0,   984,   349,     0,   985,     0,     0,     0,
  18061. -     0,     0,   251,     0,     0,   252,     0,     0,     0,   422,
  18062. -     0,     0,     0,   253,   254,   255,     0,     0,     0,     0,
  18063. -     0,   256,   257,   258,     0,     0,     0,     0,   259,     0,
  18064. -   986,     0,   260,     0,     0,     0,     0,     0,     0,     0,
  18065. -     0,     0,  1107,  1262,   261,     0,     0,     0,     0,     0,
  18066. -     0,     0,     0,     0,     0,   562,   563,     0,   565,     0,
  18067. +   484,   485,   486,   487,     0,   148,     0,     0,   419,     0,
  18068. +     0,     0,     0,     0,     0,     0,     0,     0,  1255,     0,
  18069. +   966,   967,    92,    10,   232,   233,   234,     0,   235,    12,
  18070. +   968,     0,   969,   970,   971,   972,   973,   974,   975,   976,
  18071. +   977,   978,    13,    14,    15,   236,   237,   238,    16,    83,
  18072. +   239,     0,    17,     0,   240,   241,     0,   242,    19,   243,
  18073. +   244,     0,     0,   245,   246,   247,   248,   249,    21,     0,
  18074. +   979,   347,     0,   980,     0,     0,     0,     0,     0,   250,
  18075. +     0,     0,   251,     0,     0,     0,     0,     0,     0,     0,
  18076. +   252,   253,   254,    83,    83,     0,    83,     0,   255,   256,
  18077. +   257,     0,     0,     0,     0,   258,     0,   981,     0,   259,
  18078.       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18079. -     0,     0,     0,  1283,     0,   971,   972,    92,    10,   233,
  18080. -   234,   235,     0,   236,    12,   973,   422,   974,   975,   976,
  18081. -   977,   978,   979,   980,   981,   982,   983,    13,    14,    15,
  18082. -   237,   238,   239,    16,     0,   240,     0,    17,     0,   241,
  18083. -   242,     0,   243,    19,   244,   245,     0,     0,   246,   247,
  18084. -   248,   249,   250,    21,     0,   984,   349,     0,   985,     0,
  18085. -     0,     0,     0,     0,   251,     0,     0,   252,     0,     0,
  18086. -     0,     0,     0,     0,     0,   253,   254,   255,     0,     0,
  18087. -     0,     0,     0,   256,   257,   258,     0,     0,     0,     0,
  18088. -   259,     0,   986,     0,   260,     0,     0,     0,     0,     0,
  18089. -     0,     0,     0,     0,     0,  1284,   261,  1283,     0,   971,
  18090. -   972,    92,    10,   233,   234,   235,     0,   236,    12,   973,
  18091. -     0,   974,   975,   976,   977,   978,   979,   980,   981,   982,
  18092. -   983,    13,    14,    15,   237,   238,   239,    16,     0,   240,
  18093. -     0,    17,     0,   241,   242,     0,   243,    19,   244,   245,
  18094. -     0,     0,   246,   247,   248,   249,   250,    21,     0,   984,
  18095. -   349,     0,   985,     0,     0,     0,     0,     0,   251,     0,
  18096. -     0,   252,     0,     0,     0,     0,     0,     0,     0,   253,
  18097. -   254,   255,     0,     0,     0,     0,     0,   256,   257,   258,
  18098. -     0,     0,     0,     0,   259,     0,   986,     0,   260,     0,
  18099. -     0,     0,     0,     0,     0,     0,     0,     0,     0,  1289,
  18100. -   261,  1283,     0,   971,   972,    92,    10,   233,   234,   235,
  18101. -     0,   236,    12,   973,     0,   974,   975,   976,   977,   978,
  18102. -   979,   980,   981,   982,   983,    13,    14,    15,   237,   238,
  18103. -   239,    16,     0,   240,     0,    17,     0,   241,   242,     0,
  18104. -   243,    19,   244,   245,     0,     0,   246,   247,   248,   249,
  18105. -   250,    21,     0,   984,   349,     0,   985,     0,     0,     0,
  18106. -     0,     0,   251,     0,     0,   252,     0,     0,     0,     0,
  18107. -     0,     0,     0,   253,   254,   255,     0,     0,     0,     0,
  18108. -     0,   256,   257,   258,     0,     0,     0,     0,   259,     0,
  18109. -   986,     0,   260,     0,     0,     0,     0,     0,     0,     0,
  18110. -     0,     0,     0,  1328,   261,   970,     0,   971,   972,    92,
  18111. -    10,   233,   234,   235,     0,   236,    12,   973,     0,   974,
  18112. -   975,   976,   977,   978,   979,   980,   981,   982,   983,    13,
  18113. -    14,    15,   237,   238,   239,    16,     0,   240,     0,    17,
  18114. -     0,   241,   242,     0,   243,    19,   244,   245,     0,     0,
  18115. -   246,   247,   248,   249,   250,    21,     0,   984,   349,     0,
  18116. -   985,     0,     0,     0,     0,     0,   251,     0,     0,   252,
  18117. -     0,     0,     0,     0,     0,     0,     0,   253,   254,   255,
  18118. -     0,     0,     0,     0,     0,   256,   257,   258,     0,     0,
  18119. -     0,     0,   259,     0,   986,  1255,   260,   971,   972,    92,
  18120. -    10,   233,   234,   235,     0,   236,    12,   973,   261,   974,
  18121. -   975,   976,   977,   978,   979,   980,   981,   982,   983,    13,
  18122. -    14,    15,   237,   238,   239,    16,     0,   240,     0,    17,
  18123. -     0,   241,   242,     0,   243,    19,   244,   245,     0,     0,
  18124. -   246,   247,   248,   249,   250,    21,     0,   984,   349,     0,
  18125. -   985,     0,     0,     0,     0,     0,   251,     0,     0,   252,
  18126. -     0,     0,     0,     0,     0,     0,     0,   253,   254,   255,
  18127. -     0,     0,     0,     0,     0,   256,   257,   258,     0,     0,
  18128. -     0,     0,   259,     0,   986,  1316,   260,   971,   972,    92,
  18129. -    10,   233,   234,   235,     0,   236,    12,   973,   261,   974,
  18130. -   975,   976,   977,   978,   979,   980,   981,   982,   983,    13,
  18131. -    14,    15,   237,   238,   239,    16,     0,   240,     0,    17,
  18132. -     0,   241,   242,     0,   243,    19,   244,   245,     0,     0,
  18133. -   246,   247,   248,   249,   250,    21,     0,   984,   349,     0,
  18134. -   985,     0,     0,     0,     0,     0,   251,     0,     0,   252,
  18135. -     0,     0,     0,     0,     0,     0,     0,   253,   254,   255,
  18136. -     0,     0,     0,     0,     0,   256,   257,   258,     0,     0,
  18137. -     0,     0,   259,     0,   986,   458,   260,     7,     8,    92,
  18138. -    10,   233,   234,   235,   356,   236,    12,     0,   261,     0,
  18139. +  1256,   260,  1277,     0,   966,   967,    92,    10,   232,   233,
  18140. +   234,     0,   235,    12,   968,     0,   969,   970,   971,   972,
  18141. +   973,   974,   975,   976,   977,   978,    13,    14,    15,   236,
  18142. +   237,   238,    16,     0,   239,     0,    17,     0,   240,   241,
  18143. +     0,   242,    19,   243,   244,     0,     0,   245,   246,   247,
  18144. +   248,   249,    21,     0,   979,   347,     0,   980,     0,     0,
  18145. +     0,     0,     0,   250,     0,     0,   251,     0,     0,     0,
  18146. +     0,     0,     0,     0,   252,   253,   254,     0,     0,     0,
  18147. +     0,     0,   255,   256,   257,     0,     0,     0,     0,   258,
  18148. +     0,   981,     0,   259,     0,     0,     0,     0,     0,     0,
  18149. +     0,     0,     0,     0,  1278,   260,  1277,     0,   966,   967,
  18150. +    92,    10,   232,   233,   234,     0,   235,    12,   968,     0,
  18151. +   969,   970,   971,   972,   973,   974,   975,   976,   977,   978,
  18152. +    13,    14,    15,   236,   237,   238,    16,     0,   239,     0,
  18153. +    17,     0,   240,   241,     0,   242,    19,   243,   244,     0,
  18154. +     0,   245,   246,   247,   248,   249,    21,     0,   979,   347,
  18155. +     0,   980,     0,     0,     0,     0,     0,   250,     0,     0,
  18156. +   251,     0,     0,     0,     0,     0,     0,     0,   252,   253,
  18157. +   254,     0,     0,     0,     0,     0,   255,   256,   257,     0,
  18158. +     0,     0,     0,   258,     0,   981,     0,   259,     0,     0,
  18159. +     0,     0,     0,     0,     0,     0,     0,     0,  1283,   260,
  18160. +  1277,     0,   966,   967,    92,    10,   232,   233,   234,     0,
  18161. +   235,    12,   968,     0,   969,   970,   971,   972,   973,   974,
  18162. +   975,   976,   977,   978,    13,    14,    15,   236,   237,   238,
  18163. +    16,     0,   239,     0,    17,     0,   240,   241,     0,   242,
  18164. +    19,   243,   244,     0,     0,   245,   246,   247,   248,   249,
  18165. +    21,     0,   979,   347,     0,   980,     0,     0,     0,     0,
  18166. +     0,   250,     0,     0,   251,     0,     0,     0,     0,     0,
  18167. +     0,     0,   252,   253,   254,     0,     0,     0,     0,     0,
  18168. +   255,   256,   257,     0,     0,     0,     0,   258,     0,   981,
  18169. +     0,   259,     0,     0,     0,     0,     0,     0,     0,     0,
  18170. +     0,     0,  1322,   260,   965,     0,   966,   967,    92,    10,
  18171. +   232,   233,   234,     0,   235,    12,   968,     0,   969,   970,
  18172. +   971,   972,   973,   974,   975,   976,   977,   978,    13,    14,
  18173. +    15,   236,   237,   238,    16,     0,   239,     0,    17,     0,
  18174. +   240,   241,     0,   242,    19,   243,   244,     0,     0,   245,
  18175. +   246,   247,   248,   249,    21,     0,   979,   347,     0,   980,
  18176. +     0,     0,     0,     0,     0,   250,     0,     0,   251,     0,
  18177. +     0,     0,     0,     0,     0,     0,   252,   253,   254,     0,
  18178. +     0,     0,     0,     0,   255,   256,   257,     0,     0,     0,
  18179. +     0,   258,     0,   981,  1249,   259,   966,   967,    92,    10,
  18180. +   232,   233,   234,     0,   235,    12,   968,   260,   969,   970,
  18181. +   971,   972,   973,   974,   975,   976,   977,   978,    13,    14,
  18182. +    15,   236,   237,   238,    16,     0,   239,     0,    17,     0,
  18183. +   240,   241,     0,   242,    19,   243,   244,     0,     0,   245,
  18184. +   246,   247,   248,   249,    21,     0,   979,   347,     0,   980,
  18185. +     0,     0,     0,     0,     0,   250,     0,     0,   251,     0,
  18186. +     0,     0,     0,     0,     0,     0,   252,   253,   254,     0,
  18187. +     0,     0,     0,     0,   255,   256,   257,     0,     0,     0,
  18188. +     0,   258,     0,   981,  1310,   259,   966,   967,    92,    10,
  18189. +   232,   233,   234,     0,   235,    12,   968,   260,   969,   970,
  18190. +   971,   972,   973,   974,   975,   976,   977,   978,    13,    14,
  18191. +    15,   236,   237,   238,    16,     0,   239,     0,    17,     0,
  18192. +   240,   241,     0,   242,    19,   243,   244,     0,     0,   245,
  18193. +   246,   247,   248,   249,    21,     0,   979,   347,     0,   980,
  18194. +     0,     0,     0,     0,     0,   250,     0,     0,   251,     0,
  18195. +     0,     0,     0,     0,     0,     0,   252,   253,   254,     0,
  18196. +     0,     0,     0,     0,   255,   256,   257,     0,     0,     0,
  18197. +     0,   258,     0,   981,   634,   259,     7,     8,    92,    10,
  18198. +   232,   233,   234,   354,   235,    12,     0,   260,     0,     0,
  18199.       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18200. -     0,    15,   237,   238,   239,    16,     0,   240,     0,    17,
  18201. -     0,   241,   242,     0,   243,    19,   244,   245,   513,     0,
  18202. -   246,   247,   248,   249,   250,    21,     0,    22,  -239,     0,
  18203. -     0,     0,     0,     0,     0,     0,   251,     0,     0,   790,
  18204. -     0,     0,     0,     0,     0,     0,     0,   253,   254,   791,
  18205. -     0,     0,     0,     0,     0,   256,   257,   258,     0,   516,
  18206. -     0,     0,   792,   518,     0,     0,   260,   357,     0,     0,
  18207. -     0,     0,     0,     0,     0,     0,     0,   458,   261,     7,
  18208. -     8,    92,    10,   233,   234,   235,   356,   236,    12,     0,
  18209. +    15,   236,   237,   238,    16,     0,   239,     0,    17,     0,
  18210. +   240,   241,     0,   242,    19,   243,   244,     0,     0,   245,
  18211. +   246,   247,   248,   249,    21,     0,    22,     0,     0,     0,
  18212. +     0,     0,     0,     0,     0,   250,     0,     0,   251,     0,
  18213. +     0,     0,     0,     0,     0,     0,   252,   253,   254,     0,
  18214. +     0,     0,     0,     0,   255,   256,   257,     0,     0,     0,
  18215. +     0,   258,     0,     0,     0,   259,   355,     0,     0,     0,
  18216. +     0,     0,     0,     0,     0,  -666,   587,   260,   711,   712,
  18217. +     0,    10,   437,   233,   234,     0,   235,    12,   474,   475,
  18218. +   476,   477,   478,   479,   480,   481,   482,   483,   484,   485,
  18219. +   486,   487,    15,   236,   237,   238,    16,     0,   239,     0,
  18220. +    17,     0,   240,   241,     0,   242,    19,   243,   244,     0,
  18221. +     0,   245,   246,   247,   248,   249,    21,     0,   713,   588,
  18222. +     0,     0,     0,     0,     0,     0,     0,   250,     0,     0,
  18223. +   251,     0,     0,     0,     0,     0,     0,     0,   252,   253,
  18224. +   254,     0,     0,     0,     0,     0,   255,   256,   257,     0,
  18225. +     0,     0,     0,   258,   714,     0,   587,   259,   711,   712,
  18226. +     0,    10,   437,   233,   234,     0,   235,    12,   826,   260,
  18227. +     0,     0,     0,     0,  1042,     0,     0,     0,     0,     0,
  18228. +     0,     0,    15,   236,   237,   238,    16,     0,   239,     0,
  18229. +    17,     0,   240,   241,     0,   242,    19,   243,   244,     0,
  18230. +     0,   245,   246,   247,   248,   249,    21,     0,   713,   588,
  18231. +     0,     0,     0,     0,     0,     0,     0,   250,     0,     0,
  18232. +   251,     0,     0,     0,     0,     0,     0,     0,   252,   253,
  18233. +   254,     0,     0,     0,     0,     0,   255,   256,   257,     0,
  18234. +     0,     0,     0,   258,     0,     0,   587,   259,   711,   712,
  18235. +     0,    10,   437,   233,   234,     0,   235,    12,  -384,   260,
  18236. +     0,     0,     0,     0,  1042,     0,     0,     0,     0,     0,
  18237. +     0,     0,    15,   236,   237,   238,    16,     0,   239,     0,
  18238. +    17,     0,   240,   241,     0,   242,    19,   243,   244,     0,
  18239. +     0,   245,   246,   247,   248,   249,    21,     0,   713,   588,
  18240. +     0,     0,     0,     0,     0,     0,     0,   250,     0,     0,
  18241. +   251,     0,     0,     0,     0,     0,     0,     0,   252,   253,
  18242. +   254,     0,     0,     0,     0,     0,   255,   256,   257,     0,
  18243. +     0,     0,     0,   258,     0,     0,  1158,   259,     7,     8,
  18244. +    92,    10,   232,   233,   234,     0,   235,    12,  1071,   260,
  18245.       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18246. -     0,     0,     0,    15,   237,   238,   239,    16,     0,   240,
  18247. -     0,    17,     0,   241,   242,     0,   243,    19,   244,   245,
  18248. -   513,     0,   246,   247,   248,   249,   250,    21,     0,    22,
  18249. -  -239,     0,     0,     0,     0,     0,     0,     0,   251,     0,
  18250. -     0,   850,     0,     0,     0,     0,     0,     0,     0,   253,
  18251. -   254,   851,     0,     0,     0,     0,     0,   256,   257,   258,
  18252. -     0,   516,     0,     0,   852,   518,     0,     0,   260,   357,
  18253. -     0,     0,     0,     0,     0,     0,     0,     0,     0,   355,
  18254. -   261,     7,     8,    92,    10,   233,   234,   235,   356,   236,
  18255. -    12,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18256. -     0,     0,     0,     0,     0,    15,   237,   238,   239,    16,
  18257. -     0,   240,     0,    17,     0,   241,   242,     0,   243,    19,
  18258. -   244,   245,     0,     0,   246,   247,   248,   249,   250,    21,
  18259. -     0,    22,     0,     0,     0,     0,     0,     0,     0,     0,
  18260. -   251,     0,     0,   252,     0,     0,     0,     0,     0,     0,
  18261. -     0,   253,   254,   255,     0,     0,     0,     0,     0,   256,
  18262. -   257,   258,     0,     0,     0,     0,   259,     0,     0,     0,
  18263. -   260,   357,     0,     0,     0,     0,     0,     0,     0,     0,
  18264. -  -667,   638,   261,     7,     8,    92,    10,   233,   234,   235,
  18265. -   356,   236,    12,     0,     0,     0,     0,     0,     0,     0,
  18266. -     0,     0,     0,     0,     0,     0,     0,    15,   237,   238,
  18267. -   239,    16,     0,   240,     0,    17,     0,   241,   242,     0,
  18268. -   243,    19,   244,   245,     0,     0,   246,   247,   248,   249,
  18269. -   250,    21,     0,    22,     0,     0,     0,     0,     0,     0,
  18270. -     0,     0,   251,     0,     0,   252,     0,     0,     0,     0,
  18271. -     0,     0,     0,   253,   254,   255,     0,     0,     0,     0,
  18272. -     0,   256,   257,   258,     0,     0,     0,     0,   259,     0,
  18273. -     0,     0,   260,   357,     0,     0,     0,     0,     0,     0,
  18274. -     0,     0,  -667,   591,   261,   715,   716,     0,    10,   440,
  18275. -   234,   235,     0,   236,    12,     0,     0,     0,     0,     0,
  18276. +     0,     0,    15,   236,   237,   238,    16,     0,   239,     0,
  18277. +    17,     0,   240,   241,     0,   242,    19,   243,   244,     0,
  18278. +     0,   245,   246,   247,   248,   249,    21,     0,    22,  1159,
  18279. +     0,  1160,     0,     0,     0,     0,     0,   250,     0,     0,
  18280. +   251,     0,     0,     0,     0,     0,     0,     0,   252,   253,
  18281. +   254,     0,     0,     0,     0,     0,   255,   256,   257,   196,
  18282. +     0,     0,     8,   258,    10,    11,     0,   259,     0,     0,
  18283. +    12,     0,     0,     0,     0,     0,     0,     0,     0,   260,
  18284. +     0,     0,     0,     0,     0,    15,     0,     0,     0,    16,
  18285. +     0,     0,     0,    17,     0,   197,   198,     0,     0,     0,
  18286. +     0,     0,   199,     0,     0,     0,     0,     0,     0,    21,
  18287. +     0,    93,     0,   200,     0,   201,   202,   203,     0,   204,
  18288. +   205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
  18289. +   215,   216,   217,   218,   219,   220,   221,     0,     0,   222,
  18290. +   223,   224,     0,   455,   225,     7,     8,   226,    10,   232,
  18291. +   233,   234,     0,   235,    12,     0,     0,     0,     0,     0,
  18292. +     0,     0,   227,     0,     0,     0,     0,     0,     0,    15,
  18293. +   236,   237,   238,    16,     0,   239,     0,    17,     0,   240,
  18294. +   241,     0,   242,    19,   243,   244,     0,     0,   245,   246,
  18295. +   247,   248,   249,    21,     0,    22,  -237,     0,     0,     0,
  18296. +     0,     0,     0,     0,   250,     0,     0,   251,     0,     0,
  18297. +     0,     0,     0,     0,     0,   252,   253,   254,     0,     0,
  18298. +     0,     0,     0,   255,   256,   257,     0,     0,     0,     0,
  18299. +   258,     0,     0,   587,   259,     7,     8,     0,    10,   437,
  18300. +   233,   234,     0,   235,    12,     0,   260,     0,     0,     0,
  18301.       0,     0,     0,     0,     0,     0,     0,     0,     0,    15,
  18302. -   237,   238,   239,    16,     0,   240,     0,    17,     0,   241,
  18303. -   242,     0,   243,    19,   244,   245,     0,     0,   246,   247,
  18304. -   248,   249,   250,    21,     0,   717,   592,     0,     0,     0,
  18305. -     0,     0,     0,     0,   251,     0,     0,   252,     0,     0,
  18306. -     0,     0,     0,     0,     0,   253,   254,   255,     0,     0,
  18307. -     0,     0,     0,   256,   257,   258,     0,     0,     0,     0,
  18308. -   259,   718,     0,   591,   260,   715,   716,     0,    10,   440,
  18309. -   234,   235,     0,   236,    12,   830,   261,     0,     0,     0,
  18310. -     0,  1047,     0,     0,     0,     0,     0,     0,     0,    15,
  18311. -   237,   238,   239,    16,     0,   240,     0,    17,     0,   241,
  18312. -   242,     0,   243,    19,   244,   245,     0,     0,   246,   247,
  18313. -   248,   249,   250,    21,     0,   717,   592,     0,     0,     0,
  18314. -     0,     0,     0,     0,   251,     0,     0,   252,     0,     0,
  18315. -     0,     0,     0,     0,     0,   253,   254,   255,     0,     0,
  18316. -     0,     0,     0,   256,   257,   258,     0,     0,     0,     0,
  18317. -   259,     0,     0,   591,   260,   715,   716,     0,    10,   440,
  18318. -   234,   235,     0,   236,    12,  -386,   261,     0,     0,     0,
  18319. -     0,  1047,     0,     0,     0,     0,     0,     0,     0,    15,
  18320. -   237,   238,   239,    16,     0,   240,     0,    17,     0,   241,
  18321. -   242,     0,   243,    19,   244,   245,     0,     0,   246,   247,
  18322. -   248,   249,   250,    21,     0,   717,   592,     0,     0,     0,
  18323. -     0,     0,     0,     0,   251,     0,     0,   252,     0,     0,
  18324. -     0,     0,     0,     0,     0,   253,   254,   255,     0,     0,
  18325. -     0,     0,     0,   256,   257,   258,     0,     0,     0,     0,
  18326. -   259,     0,     0,  1164,   260,     7,     8,    92,    10,   233,
  18327. -   234,   235,     0,   236,    12,  1077,   261,     0,     0,     0,
  18328. +   236,   237,   238,    16,     0,   239,     0,    17,     0,   240,
  18329. +   241,     0,   242,    19,   243,   244,     0,     0,   245,   246,
  18330. +   247,   248,   249,    21,     0,    22,   588,     0,     0,     0,
  18331. +     0,     0,     0,     0,   250,     0,     0,   251,     0,     0,
  18332. +     0,     0,     0,     0,     0,   252,   253,   254,     0,     0,
  18333. +     0,     0,     0,   255,   256,   257,     0,     0,     0,     0,
  18334. +   258,     0,     0,   455,   259,     7,     8,     0,    10,   232,
  18335. +   233,   234,     0,   235,    12,     0,   260,     0,     0,     0,
  18336.       0,     0,     0,     0,     0,     0,     0,     0,     0,    15,
  18337. -   237,   238,   239,    16,     0,   240,     0,    17,     0,   241,
  18338. -   242,     0,   243,    19,   244,   245,     0,     0,   246,   247,
  18339. -   248,   249,   250,    21,     0,    22,  1165,     0,  1166,     0,
  18340. -     0,     0,     0,     0,   251,     0,     0,   252,     0,     0,
  18341. -     0,     0,     0,     0,     0,   253,   254,   255,     0,     0,
  18342. -     0,     0,     0,   256,   257,   258,     0,     0,     0,     0,
  18343. -   259,     0,     0,   591,   260,   715,   716,     0,    10,   440,
  18344. -   234,   235,     0,   236,    12,     0,   261,     0,     0,     0,
  18345. +   236,   237,   238,    16,     0,   239,     0,    17,     0,   240,
  18346. +   241,     0,   242,    19,   243,   244,     0,     0,   245,   246,
  18347. +   247,   248,   249,    21,     0,    22,  -237,     0,     0,     0,
  18348. +     0,     0,     0,     0,   250,     0,     0,  1177,     0,     0,
  18349. +     0,     0,     0,     0,     0,   252,   253,  1178,     0,     0,
  18350. +     0,     0,     0,   255,   256,   257,     0,     0,     0,     0,
  18351. +  1179,     0,     0,  1229,   259,     7,     8,     0,    10,   232,
  18352. +   233,   234,     0,   235,    12,     0,   260,     0,     0,     0,
  18353.       0,     0,     0,     0,     0,     0,     0,     0,     0,    15,
  18354. -   237,   238,   239,    16,     0,   240,     0,    17,     0,   241,
  18355. -   242,     0,   243,    19,   244,   245,     0,     0,   246,   247,
  18356. -   248,   249,   250,    21,     0,   717,   592,     0,     0,     0,
  18357. -     0,     0,     0,     0,   251,     0,     0,   252,     0,     0,
  18358. -     0,     0,     0,     0,     0,   253,   254,   255,     0,     0,
  18359. -     0,     0,     0,   256,   257,   258,     0,     0,     0,     0,
  18360. -   259,   718,   197,     0,   260,     8,     0,    10,    11,     0,
  18361. -     0,     0,     0,    12,     0,     0,   261,     0,     0,     0,
  18362. -     0,     0,     0,     0,     0,     0,     0,     0,    15,     0,
  18363. -     0,     0,    16,     0,     0,     0,    17,     0,   198,   199,
  18364. -     0,     0,     0,     0,     0,   200,     0,     0,     0,     0,
  18365. -     0,     0,    21,     0,    93,     0,   201,     0,   202,   203,
  18366. -   204,     0,   205,   206,   207,   208,   209,   210,   211,   212,
  18367. -   213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
  18368. -     0,     0,   223,   224,   225,     0,   458,   226,     7,     8,
  18369. -   227,    10,   233,   234,   235,     0,   236,    12,     0,     0,
  18370. -     0,     0,     0,     0,     0,   228,     0,     0,     0,     0,
  18371. -     0,     0,    15,   237,   238,   239,    16,     0,   240,     0,
  18372. -    17,     0,   241,   242,     0,   243,    19,   244,   245,     0,
  18373. -     0,   246,   247,   248,   249,   250,    21,     0,    22,  -239,
  18374. -     0,     0,     0,     0,     0,     0,     0,   251,     0,     0,
  18375. -   252,     0,     0,     0,     0,     0,     0,     0,   253,   254,
  18376. -   255,     0,     0,     0,     0,     0,   256,   257,   258,     0,
  18377. -     0,     0,     0,   259,     0,     0,   591,   260,     7,     8,
  18378. -     0,    10,   440,   234,   235,     0,   236,    12,     0,   261,
  18379. -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18380. -     0,     0,    15,   237,   238,   239,    16,     0,   240,     0,
  18381. -    17,     0,   241,   242,     0,   243,    19,   244,   245,     0,
  18382. -     0,   246,   247,   248,   249,   250,    21,     0,    22,   592,
  18383. -     0,     0,     0,     0,     0,     0,     0,   251,     0,     0,
  18384. -   252,     0,     0,     0,     0,     0,     0,     0,   253,   254,
  18385. -   255,     0,     0,     0,     0,     0,   256,   257,   258,     0,
  18386. -     0,     0,     0,   259,     0,     0,   725,   260,     7,     8,
  18387. -     0,    10,   440,   234,   235,     0,   236,    12,     0,   261,
  18388. -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18389. -     0,     0,    15,   237,   238,   239,    16,     0,   240,     0,
  18390. -    17,     0,   241,   242,     0,   243,    19,   244,   245,     0,
  18391. -     0,   246,   247,   248,   249,   250,    21,     0,    22,     0,
  18392. -     0,     0,     0,     0,     0,  -657,     0,   251,     0,     0,
  18393. -   252,     0,     0,     0,     0,     0,     0,     0,   253,   254,
  18394. -   255,     0,     0,     0,     0,     0,   256,   257,   258,     0,
  18395. -     0,     0,     0,   259,     0,     0,   458,   260,     7,     8,
  18396. -     0,    10,   233,   234,   235,     0,   236,    12,     0,   261,
  18397. -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18398. -     0,     0,    15,   237,   238,   239,    16,     0,   240,     0,
  18399. -    17,     0,   241,   242,     0,   243,    19,   244,   245,     0,
  18400. -     0,   246,   247,   248,   249,   250,    21,     0,    22,  -239,
  18401. -     0,     0,     0,     0,     0,     0,     0,   251,     0,     0,
  18402. -   895,     0,     0,     0,     0,     0,     0,     0,   253,   254,
  18403. -   896,     0,     0,     0,     0,     0,   256,   257,   258,     0,
  18404. -     0,     0,     0,   897,     0,     0,   458,   260,     7,     8,
  18405. -     0,    10,   233,   234,   235,     0,   236,    12,     0,   261,
  18406. -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18407. -     0,     0,    15,   237,   238,   239,    16,     0,   240,     0,
  18408. -    17,     0,   241,   242,     0,   243,    19,   244,   245,     0,
  18409. -     0,   246,   247,   248,   249,   250,    21,     0,    22,  -239,
  18410. -     0,     0,     0,     0,     0,     0,     0,   251,     0,     0,
  18411. -  1183,     0,     0,     0,     0,     0,     0,     0,   253,   254,
  18412. -  1184,     0,     0,     0,     0,     0,   256,   257,   258,     0,
  18413. -     0,     0,     0,  1185,     0,     0,  1235,   260,     7,     8,
  18414. -     0,    10,   233,   234,   235,     0,   236,    12,     0,   261,
  18415. -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18416. -     0,     0,    15,   237,   238,   239,    16,     0,   240,     0,
  18417. -    17,     0,   241,   242,     0,   243,    19,   244,   245,     0,
  18418. -     0,   246,   247,   248,   249,   250,    21,     0,    22,     0,
  18419. -     0,  -139,     0,     0,     0,     0,     0,   251,     0,     0,
  18420. -   252,     0,     0,     0,     0,     0,     0,     0,   253,   254,
  18421. -   255,     0,     0,     0,     0,     0,   256,   257,   258,     0,
  18422. -     0,     0,     0,   259,     0,     0,   725,   260,     7,     8,
  18423. -     0,    10,   440,   234,   235,     0,   236,    12,     0,   261,
  18424. -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18425. -     0,     0,    15,   237,   238,   239,    16,     0,   240,     0,
  18426. -    17,     0,   241,   242,     0,   243,    19,   244,   245,     0,
  18427. -     0,   246,   247,   248,   249,   250,    21,     0,    22,     0,
  18428. -     0,     0,     0,     0,     0,     0,     0,   251,     0,     0,
  18429. -   252,     0,     0,     0,     0,     0,     0,     0,   253,   254,
  18430. -   255,     0,     0,     0,     0,     0,   256,   257,   258,     0,
  18431. -     0,     0,     0,   259,     0,     0,     0,   260,     0,     0,
  18432. -     0,     0,     0,     0,     0,     0,     0,  -657,   804,   261,
  18433. -     7,     8,     0,    10,   440,   234,   235,     0,   236,    12,
  18434. -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18435. -     0,     0,     0,     0,    15,   237,   238,   239,    16,     0,
  18436. -   240,     0,    17,     0,   241,   242,     0,   243,    19,   244,
  18437. -   245,     0,     0,   246,   247,   248,   249,   250,    21,     0,
  18438. -    22,     0,     0,     0,     0,     0,     0,     0,     0,   251,
  18439. -     0,     0,   252,     0,     0,     0,     0,     0,     0,     0,
  18440. -   253,   254,   255,     0,     0,     0,     0,     0,   256,   257,
  18441. -   258,     0,     0,     0,     0,   259,     0,     0,   806,   260,
  18442. -     7,     8,     0,    10,   440,   234,   235,     0,   236,    12,
  18443. -     0,   261,     0,     0,     0,     0,     0,     0,     0,     0,
  18444. -     0,     0,     0,     0,    15,   237,   238,   239,    16,     0,
  18445. -   240,     0,    17,     0,   241,   242,     0,   243,    19,   244,
  18446. -   245,     0,     0,   246,   247,   248,   249,   250,    21,     0,
  18447. -    22,     0,     0,     0,     0,     0,     0,     0,     0,   251,
  18448. -     0,     0,   252,     0,     0,     0,     0,     0,     0,     0,
  18449. -   253,   254,   255,     0,     0,     0,     0,     0,   256,   257,
  18450. -   258,     0,     0,     0,     0,   259,     0,     7,     8,   260,
  18451. -    10,   440,   234,   235,     0,   236,    12,     0,     0,     0,
  18452. -     0,   261,     0,     0,     0,     0,     0,     0,     0,     0,
  18453. -     0,    15,   237,   238,   239,    16,     0,   240,     0,    17,
  18454. -     0,   241,   242,     0,   243,    19,   244,   245,     0,     0,
  18455. -   246,   247,   248,   249,   250,    21,     0,    22,     0,     0,
  18456. -     0,     0,     0,     0,     0,     0,   251,     0,     0,   252,
  18457. -     0,     0,     0,     0,     0,     0,     0,   253,   254,   255,
  18458. -     0,     0,     0,     0,     0,   256,   257,   258,     0,     0,
  18459. -     0,     0,   259,     0,     0,     0,   260,     0,     0,     0,
  18460. -     0,     0,     0,     0,     0,     0,     0,     0,   261,   764,
  18461. -   971,   972,    92,    10,   233,   234,   235,     0,   236,    12,
  18462. -   973,     0,   974,   975,   976,   977,   978,   979,   980,   981,
  18463. -   982,   983,    13,    14,    15,   237,   238,   239,    16,     0,
  18464. -   240,     0,    17,     0,   241,   242,     0,   243,    19,   244,
  18465. -   245,     0,     0,   246,   247,   248,   249,   250,    21,     0,
  18466. -   984,   349,     0,   985,     0,     0,     0,     0,     0,   251,
  18467. -     0,     0,   252,     0,     0,     0,     0,     0,     0,     0,
  18468. -   253,   254,   255,     0,     0,     0,     0,     0,   256,   257,
  18469. -   258,     0,     0,     0,     0,   259,     0,   986,     0,   260,
  18470. +   236,   237,   238,    16,     0,   239,     0,    17,     0,   240,
  18471. +   241,     0,   242,    19,   243,   244,     0,     0,   245,   246,
  18472. +   247,   248,   249,    21,     0,    22,     0,     0,  -139,     0,
  18473. +     0,     0,     0,     0,   250,     0,     0,   251,     0,     0,
  18474. +     0,     0,     0,     0,     0,   252,   253,   254,     0,     0,
  18475. +     0,     0,     0,   255,   256,   257,     0,     0,     0,     0,
  18476. +   258,     0,     0,   721,   259,     7,     8,     0,    10,   437,
  18477. +   233,   234,     0,   235,    12,     0,   260,     0,     0,     0,
  18478. +     0,     0,     0,     0,     0,     0,     0,     0,     0,    15,
  18479. +   236,   237,   238,    16,     0,   239,     0,    17,     0,   240,
  18480. +   241,     0,   242,    19,   243,   244,     0,     0,   245,   246,
  18481. +   247,   248,   249,    21,     0,    22,     0,     0,     0,     0,
  18482. +     0,     0,     0,     0,   250,     0,     0,   251,     0,     0,
  18483. +     0,     0,     0,     0,     0,   252,   253,   254,     0,     0,
  18484. +     0,     0,     0,   255,   256,   257,     0,     0,     0,     0,
  18485. +   258,     0,     0,     0,   259,     0,     0,     0,     0,     0,
  18486. +     0,     0,     0,     0,  -656,   800,   260,     7,     8,     0,
  18487. +    10,   437,   233,   234,     0,   235,    12,   475,   476,   477,
  18488. +   478,   479,   480,   481,   482,   483,   484,   485,   486,   487,
  18489. +     0,    15,   236,   237,   238,    16,     0,   239,     0,    17,
  18490. +     0,   240,   241,     0,   242,    19,   243,   244,     0,     0,
  18491. +   245,   246,   247,   248,   249,    21,     0,    22,     0,     0,
  18492. +     0,     0,     0,     0,     0,     0,   250,     0,     0,   251,
  18493. +     0,     0,     0,     0,     0,     0,     0,   252,   253,   254,
  18494. +     0,     0,     0,     0,     0,   255,   256,   257,     0,     0,
  18495. +     0,     0,   258,     0,     0,   802,   259,     7,     8,     0,
  18496. +    10,   437,   233,   234,     0,   235,    12,     0,   260,     0,
  18497.       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18498. -  1116,   261,   971,   972,    92,    10,   233,   234,   235,     0,
  18499. -   236,    12,   973,     0,   974,   975,   976,   977,   978,   979,
  18500. -   980,   981,   982,   983,    13,    14,    15,   237,   238,   239,
  18501. -    16,     0,   240,     0,    17,     0,   241,   242,     0,   243,
  18502. -    19,   244,   245,     0,     0,   246,   247,   248,   249,   250,
  18503. -    21,     0,   984,   349,     0,   985,     0,     0,     0,     0,
  18504. -     0,   251,     0,     0,   252,     0,     0,     0,     0,     0,
  18505. -     0,     0,   253,   254,   255,     0,     0,     0,     0,     0,
  18506. -   256,   257,   258,     0,     0,     0,     0,   259,     0,   986,
  18507. -     0,   260,   971,   972,    92,    10,   233,   234,   235,     0,
  18508. -   236,    12,   973,   261,   974,   975,   976,   977,   978,   979,
  18509. -   980,   981,   982,   983,    13,    14,    15,   237,   238,   239,
  18510. -    16,     0,   240,     0,    17,     0,   241,   242,     0,   243,
  18511. -    19,   244,   245,     0,     0,   246,   247,   248,   249,   250,
  18512. -    21,     0,   984,  1276,     0,   985,     0,     0,     0,     0,
  18513. -     0,   251,     0,     0,   252,     0,     0,     0,     0,     0,
  18514. -     0,     0,   253,   254,   255,     0,     0,     0,     0,     0,
  18515. -   256,   257,   258,     0,     0,     0,     0,   259,     0,   986,
  18516. -     0,   260,   971,   972,    92,    10,   233,   234,   235,     0,
  18517. -   236,    12,   973,   261,   974,   975,   976,   977,   978,   979,
  18518. -   980,   981,   982,   983,    13,    14,    15,   237,   238,   239,
  18519. -    16,     0,   240,     0,    17,     0,   241,   242,     0,   243,
  18520. -    19,   244,   245,     0,     0,   246,   247,   248,   249,   250,
  18521. -    21,     0,   984,     0,     0,   985,     0,     0,     0,     0,
  18522. -     0,   251,     0,     0,   252,     0,     0,     0,     0,     0,
  18523. -     0,     0,   253,   254,   255,     0,     0,     0,     0,     0,
  18524. -   256,   257,   258,     0,     0,     0,     0,   259,     0,   986,
  18525. -     0,   260,     7,     8,    92,    10,   233,   234,   235,   356,
  18526. -   236,    12,     0,   261,     0,     0,     0,     0,     0,     0,
  18527. -     0,     0,     0,     0,     0,     0,    15,   237,   238,   239,
  18528. -    16,     0,   240,     0,    17,     0,   241,   242,     0,   243,
  18529. -    19,   244,   245,   513,     0,   246,   247,   248,   249,   250,
  18530. -    21,     0,    22,     0,     0,     0,     0,     0,     0,     0,
  18531. -     0,   251,     0,     0,   790,     0,     0,     0,     0,     0,
  18532. -     0,     0,   253,   254,   791,     0,     0,     0,     0,     0,
  18533. -   256,   257,   258,     0,   516,     0,     0,   792,   518,     0,
  18534. -     0,   260,   357,     7,     8,    92,    10,   233,   234,   235,
  18535. -   356,   236,    12,   261,     0,     0,     0,     0,     0,     0,
  18536. -     0,     0,     0,     0,     0,     0,     0,    15,   237,   238,
  18537. -   239,    16,     0,   240,     0,    17,     0,   241,   242,     0,
  18538. -   243,    19,   244,   245,   513,     0,   246,   247,   248,   249,
  18539. -   250,    21,     0,    22,     0,     0,     0,     0,     0,     0,
  18540. -     0,     0,   251,     0,     0,   850,     0,     0,     0,     0,
  18541. -     0,     0,     0,   253,   254,   851,     0,     0,     0,     0,
  18542. -     0,   256,   257,   258,     0,   516,     0,     0,   852,   518,
  18543. -     0,     0,   260,   357,     7,     8,     0,    10,   233,   234,
  18544. -   235,     0,   236,    12,   261,     0,     0,     0,     0,     0,
  18545. -     0,     0,     0,     0,     0,     0,     0,     0,    15,   237,
  18546. -   238,   239,    16,     0,   240,     0,    17,     0,   241,   242,
  18547. -     0,   243,    19,   244,   245,   513,     0,   246,   247,   248,
  18548. -   249,   250,    21,     0,    22,     0,     0,     0,     0,     0,
  18549. -     0,     0,     0,   251,     0,     0,   790,     0,     0,     0,
  18550. -     0,     0,     0,     0,   253,   254,   791,     0,     0,     0,
  18551. -     0,     0,   256,   257,   258,     0,   516,     0,     0,   792,
  18552. -   518,     7,     8,     0,    10,   233,   234,   235,     0,   236,
  18553. -    12,     0,     0,     0,     0,   261,     0,     0,     0,     0,
  18554. -     0,     0,     0,     0,     0,    15,   237,   238,   239,    16,
  18555. -     0,   240,     0,    17,     0,   241,   242,     0,   243,    19,
  18556. -   244,   245,   513,     0,   246,   247,   248,   249,   250,    21,
  18557. +     0,    15,   236,   237,   238,    16,     0,   239,     0,    17,
  18558. +     0,   240,   241,     0,   242,    19,   243,   244,     0,     0,
  18559. +   245,   246,   247,   248,   249,    21,     0,    22,     0,     0,
  18560. +     0,     0,     0,     0,     0,     0,   250,     0,     0,   251,
  18561. +     0,     0,     0,     0,     0,     0,     0,   252,   253,   254,
  18562. +     0,     0,     0,     0,     0,   255,   256,   257,     0,     0,
  18563. +     0,     0,   258,     0,     7,     8,   259,    10,   437,   233,
  18564. +   234,     0,   235,    12,     0,     0,     0,     0,   260,     0,
  18565. +     0,     0,     0,     0,     0,     0,     0,     0,    15,   236,
  18566. +   237,   238,    16,     0,   239,     0,    17,     0,   240,   241,
  18567. +     0,   242,    19,   243,   244,     0,     0,   245,   246,   247,
  18568. +   248,   249,    21,     0,    22,     0,     0,     0,     0,     0,
  18569. +     0,     0,     0,   250,     0,     0,   251,     0,     0,     0,
  18570. +     0,     0,     0,     0,   252,   253,   254,     0,     0,     0,
  18571. +     0,     0,   255,   256,   257,     0,     0,     0,     0,   258,
  18572. +     0,     0,     0,   259,     0,     0,     0,     0,     0,     0,
  18573. +     0,     0,     0,     0,     0,   260,   760,   966,   967,    92,
  18574. +    10,   232,   233,   234,     0,   235,    12,   968,     0,   969,
  18575. +   970,   971,   972,   973,   974,   975,   976,   977,   978,    13,
  18576. +    14,    15,   236,   237,   238,    16,     0,   239,     0,    17,
  18577. +     0,   240,   241,     0,   242,    19,   243,   244,     0,     0,
  18578. +   245,   246,   247,   248,   249,    21,     0,   979,   347,     0,
  18579. +   980,     0,     0,     0,     0,     0,   250,     0,     0,   251,
  18580. +     0,     0,     0,     0,     0,     0,     0,   252,   253,   254,
  18581. +     0,     0,     0,     0,     0,   255,   256,   257,     0,     0,
  18582. +     0,     0,   258,     0,   981,     0,   259,     0,     0,     0,
  18583. +     0,     0,     0,     0,     0,     0,     0,  1110,   260,   966,
  18584. +   967,    92,    10,   232,   233,   234,     0,   235,    12,   968,
  18585. +     0,   969,   970,   971,   972,   973,   974,   975,   976,   977,
  18586. +   978,    13,    14,    15,   236,   237,   238,    16,     0,   239,
  18587. +     0,    17,     0,   240,   241,     0,   242,    19,   243,   244,
  18588. +     0,     0,   245,   246,   247,   248,   249,    21,     0,   979,
  18589. +   347,     0,   980,     0,     0,     0,     0,     0,   250,     0,
  18590. +     0,   251,     0,     0,     0,     0,     0,     0,     0,   252,
  18591. +   253,   254,     0,     0,     0,     0,     0,   255,   256,   257,
  18592. +     0,     0,     0,     0,   258,     0,   981,     0,   259,   966,
  18593. +   967,    92,    10,   232,   233,   234,     0,   235,    12,   968,
  18594. +   260,   969,   970,   971,   972,   973,   974,   975,   976,   977,
  18595. +   978,    13,    14,    15,   236,   237,   238,    16,     0,   239,
  18596. +     0,    17,     0,   240,   241,     0,   242,    19,   243,   244,
  18597. +     0,     0,   245,   246,   247,   248,   249,    21,     0,   979,
  18598. +  1270,     0,   980,     0,     0,     0,     0,     0,   250,     0,
  18599. +     0,   251,     0,     0,     0,     0,     0,     0,     0,   252,
  18600. +   253,   254,     0,     0,     0,     0,     0,   255,   256,   257,
  18601. +     0,     0,     0,     0,   258,     0,   981,     0,   259,   966,
  18602. +   967,    92,    10,   232,   233,   234,     0,   235,    12,   968,
  18603. +   260,   969,   970,   971,   972,   973,   974,   975,   976,   977,
  18604. +   978,    13,    14,    15,   236,   237,   238,    16,     0,   239,
  18605. +     0,    17,     0,   240,   241,     0,   242,    19,   243,   244,
  18606. +     0,     0,   245,   246,   247,   248,   249,    21,     0,   979,
  18607. +     0,     0,   980,     0,     0,     0,     0,     0,   250,     0,
  18608. +     0,   251,     0,     0,     0,     0,     0,     0,     0,   252,
  18609. +   253,   254,     0,     0,     0,     0,     0,   255,   256,   257,
  18610. +     0,     0,     0,     0,   258,     0,   981,     0,   259,     7,
  18611. +     8,    92,    10,   232,   233,   234,   354,   235,    12,     0,
  18612. +   260,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18613. +     0,     0,     0,    15,   236,   237,   238,    16,     0,   239,
  18614. +     0,    17,     0,   240,   241,     0,   242,    19,   243,   244,
  18615. +   510,     0,   245,   246,   247,   248,   249,    21,     0,    22,
  18616. +     0,     0,     0,     0,     0,     0,     0,     0,   250,     0,
  18617. +     0,   786,     0,     0,     0,     0,     0,     0,     0,   252,
  18618. +   253,   787,     0,     0,     0,     0,     0,   255,   256,   257,
  18619. +     0,   513,     0,     0,   788,   515,     0,     0,   259,   355,
  18620. +     7,     8,    92,    10,   232,   233,   234,   354,   235,    12,
  18621. +   260,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18622. +     0,     0,     0,     0,    15,   236,   237,   238,    16,     0,
  18623. +   239,     0,    17,     0,   240,   241,     0,   242,    19,   243,
  18624. +   244,   510,     0,   245,   246,   247,   248,   249,    21,     0,
  18625. +    22,     0,     0,     0,     0,     0,     0,     0,     0,   250,
  18626. +     0,     0,   845,     0,     0,     0,     0,     0,     0,     0,
  18627. +   252,   253,   846,     0,     0,     0,     0,     0,   255,   256,
  18628. +   257,     0,   513,     0,     0,   847,   515,     0,     0,   259,
  18629. +   355,     7,     8,     0,    10,   232,   233,   234,     0,   235,
  18630. +    12,   260,     0,     0,     0,     0,     0,     0,     0,     0,
  18631. +     0,     0,     0,     0,     0,    15,   236,   237,   238,    16,
  18632. +     0,   239,     0,    17,     0,   240,   241,     0,   242,    19,
  18633. +   243,   244,   510,     0,   245,   246,   247,   248,   249,    21,
  18634.       0,    22,     0,     0,     0,     0,     0,     0,     0,     0,
  18635. -   251,     0,     0,   850,     0,     0,     0,     0,     0,     0,
  18636. -     0,   253,   254,   851,     0,     0,     0,     0,     0,   256,
  18637. -   257,   258,     0,   516,     0,     0,   852,   518,     7,     8,
  18638. -     0,    10,   233,   234,   235,     0,   236,    12,     0,     0,
  18639. -     0,     0,   261,     0,     0,     0,     0,     0,     0,     0,
  18640. -     0,     0,    15,   237,   238,   239,    16,     0,   240,     0,
  18641. -    17,     0,   241,   242,     0,   243,    19,   244,   245,     0,
  18642. -     0,   246,   247,   248,   249,   250,    21,     0,    22,     0,
  18643. -     0,     0,     0,     0,     0,     0,     0,   251,     0,     0,
  18644. -   252,     0,     0,     0,     0,   305,     0,     0,   253,   254,
  18645. -   255,     0,     0,     0,     0,     0,   256,   257,   258,     0,
  18646. -     0,     0,     0,   259,     0,     7,     8,   260,    10,   440,
  18647. -   234,   235,     0,   236,    12,     0,     0,     0,     0,   261,
  18648. +   250,     0,     0,   786,     0,     0,     0,     0,     0,     0,
  18649. +     0,   252,   253,   787,     0,     0,     0,     0,     0,   255,
  18650. +   256,   257,     0,   513,     0,     0,   788,   515,     7,     8,
  18651. +     0,    10,   232,   233,   234,     0,   235,    12,     0,     0,
  18652. +     0,     0,   260,     0,     0,     0,     0,     0,     0,     0,
  18653. +     0,     0,    15,   236,   237,   238,    16,     0,   239,     0,
  18654. +    17,     0,   240,   241,     0,   242,    19,   243,   244,   510,
  18655. +     0,   245,   246,   247,   248,   249,    21,     0,    22,     0,
  18656. +     0,     0,     0,     0,     0,     0,     0,   250,     0,     0,
  18657. +   845,     0,     0,     0,     0,     0,     0,     0,   252,   253,
  18658. +   846,     0,     0,     0,     0,     0,   255,   256,   257,     0,
  18659. +   513,     0,     0,   847,   515,     7,     8,     0,    10,   232,
  18660. +   233,   234,     0,   235,    12,     0,     0,     0,     0,   260,
  18661.       0,     0,     0,     0,     0,     0,     0,     0,     0,    15,
  18662. -   237,   238,   239,    16,     0,   240,     0,    17,     0,   241,
  18663. -   242,     0,   243,    19,   244,   245,     0,     0,   246,   247,
  18664. -   248,   249,   250,    21,     0,    22,     0,     0,  1093,     0,
  18665. -     0,     0,     0,     0,   251,     0,     0,   252,     0,     0,
  18666. -     0,     0,     0,     0,     0,   253,   254,   255,     0,     0,
  18667. -     0,     0,     0,   256,   257,   258,     0,     0,     0,     0,
  18668. -   259,     0,     7,     8,   260,    10,   233,   234,   235,     0,
  18669. -   236,    12,     0,     0,     0,     0,   261,     0,     0,     0,
  18670. -     0,     0,     0,     0,     0,     0,    15,   237,   238,   239,
  18671. -    16,     0,   240,     0,    17,     0,   241,   242,     0,   243,
  18672. -    19,   244,   245,     0,     0,   246,   247,   248,   249,   250,
  18673. +   236,   237,   238,    16,     0,   239,     0,    17,     0,   240,
  18674. +   241,     0,   242,    19,   243,   244,   510,     0,   245,   246,
  18675. +   247,   248,   249,    21,     0,    22,     0,     0,     0,     0,
  18676. +     0,     0,     0,     0,   250,     0,     0,   940,     0,     0,
  18677. +     0,     0,     0,     0,     0,   252,   253,   941,     0,     0,
  18678. +     0,     0,     0,   255,   256,   257,     0,   513,     0,     0,
  18679. +   788,   515,     7,     8,     0,    10,   232,   233,   234,     0,
  18680. +   235,    12,     0,     0,     0,     0,   260,     0,     0,     0,
  18681. +     0,     0,     0,     0,     0,     0,    15,   236,   237,   238,
  18682. +    16,     0,   239,     0,    17,     0,   240,   241,     0,   242,
  18683. +    19,   243,   244,     0,     0,   245,   246,   247,   248,   249,
  18684.      21,     0,    22,     0,     0,     0,     0,     0,     0,     0,
  18685. -     0,   251,     0,     0,   252,     0,     0,     0,     0,     0,
  18686. -     0,     0,   253,   254,   255,     0,     0,     0,     0,     0,
  18687. -   256,   257,   258,     0,     0,     0,     0,   259,     0,     7,
  18688. -     8,   260,    10,   440,   234,   235,     0,   236,    12,     0,
  18689. -     0,     0,     0,   261,     0,     0,     0,     0,     0,     0,
  18690. -     0,     0,     0,    15,   237,   238,   239,    16,     0,   240,
  18691. -     0,    17,     0,   241,   242,     0,   243,    19,   244,   245,
  18692. -     0,     0,   246,   247,   248,   249,   250,    21,     0,    22,
  18693. -   466,     0,     0,     0,     0,     0,     0,     0,   251,     0,
  18694. -     0,   252,     0,     0,     0,     0,     0,     0,     0,   253,
  18695. -   254,   255,     0,     0,     0,     0,     0,   256,   257,   258,
  18696. -     0,     0,     7,     8,   467,    10,   440,   234,   235,     0,
  18697. -   236,    12,     0,     0,     0,     0,     0,     0,     0,     0,
  18698. -   261,     0,     0,     0,     0,     0,    15,   237,   238,   239,
  18699. -    16,     0,   240,     0,    17,     0,   241,   242,     0,   243,
  18700. -    19,   244,   245,     0,     0,   246,   247,   248,   249,   250,
  18701. -    21,     0,    22,     0,     0,     0,     0,     0,     0,     0,
  18702. -     0,   251,     0,     0,   252,     0,     0,     0,     0,     0,
  18703. -     0,     0,   253,   254,   255,     0,     0,     0,     0,     0,
  18704. -   256,   257,   258,     0,     0,     0,     0,   259,   503,     7,
  18705. -     8,     0,    10,   440,   234,   235,     0,   236,    12,     0,
  18706. -     0,     0,     0,   261,     0,     0,     0,     0,     0,     0,
  18707. -     0,     0,     0,    15,   237,   238,   239,    16,     0,   240,
  18708. -     0,    17,     0,   241,   242,     0,   243,    19,   244,   245,
  18709. -     0,     0,   246,   247,   248,   249,   250,    21,     0,    22,
  18710. -     0,     0,     0,     0,     0,     0,     0,     0,   251,     0,
  18711. -     0,   252,     0,     0,     0,     0,     0,     0,     0,   253,
  18712. -   254,   255,     0,     0,     0,     0,     0,   256,   257,   258,
  18713. -     0,     0,     0,     0,   259,     0,     7,   701,   260,    10,
  18714. -   440,   234,   235,     0,   236,    12,     0,     0,     0,     0,
  18715. -   261,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18716. -    15,   237,   238,   239,    16,     0,   240,     0,    17,     0,
  18717. -   241,   242,     0,   243,    19,   244,   245,     0,     0,   246,
  18718. -   247,   248,   249,   250,    21,     0,    22,     0,     0,     0,
  18719. -     0,     0,     0,     0,     0,   251,     0,     0,   252,     0,
  18720. -     0,     0,     0,     0,     0,     0,   253,   254,   255,     0,
  18721. -     0,     0,     0,     0,   256,   257,   258,     0,     0,     0,
  18722. -     0,   259,     0,     7,     8,   260,    10,   440,   234,   235,
  18723. -     0,   236,    12,     0,     0,     0,     0,   261,     0,     0,
  18724. -     0,     0,     0,     0,     0,     0,     0,    15,   237,   238,
  18725. -   239,    16,     0,   240,     0,    17,     0,   241,   242,     0,
  18726. -   243,    19,   244,   245,     0,     0,   246,   247,   248,   249,
  18727. -   250,    21,     0,    22,     0,     0,     0,     0,     0,     0,
  18728. -     0,     0,   251,     0,     0,   895,     0,     0,     0,     0,
  18729. -     0,     0,     0,   253,   254,   896,     0,     0,     0,     0,
  18730. -     0,   256,   257,   258,     0,     0,     0,     0,   897,     0,
  18731. -     7,     8,   260,    10,   440,   234,   235,     0,   236,    12,
  18732. -     0,     0,     0,     0,   261,     0,     0,     0,     0,     0,
  18733. -     0,     0,     0,     0,    15,   237,   238,   239,    16,     0,
  18734. -   240,     0,    17,     0,   241,   242,     0,   243,    19,   244,
  18735. -   245,     0,     0,   246,   247,   248,   249,   250,    21,     0,
  18736. -    22,     0,     0,     0,     0,     0,     0,     0,     0,   251,
  18737. -     0,     0,  1183,     0,     0,     0,     0,     0,     0,     0,
  18738. -   253,   254,  1184,     0,     0,     0,     0,     0,   256,   257,
  18739. -   258,     0,     0,     0,     0,  1185,     0,  1248,     8,   260,
  18740. -    10,   440,   234,   235,     0,   236,    12,     0,     0,     0,
  18741. -     0,   261,     0,     0,     0,     0,     0,     0,     0,     0,
  18742. -     0,    15,   237,   238,   239,    16,     0,   240,     0,    17,
  18743. -     0,   241,   242,     0,   243,    19,   244,   245,     0,     0,
  18744. -   246,   247,   248,   249,   250,    21,     0,    22,     0,     0,
  18745. -     0,     0,     0,     0,     0,     0,   251,     0,     0,   252,
  18746. -     0,     0,     0,     0,     0,     0,     0,   253,   254,   255,
  18747. -     0,     0,     0,     0,     0,   256,   257,   258,     0,     0,
  18748. -     0,     0,   259,     0,     7,     8,   260,    10,   440,   234,
  18749. -   235,     0,   236,    12,     0,     0,     0,     0,   261,     0,
  18750. -     0,     0,     0,     0,     0,     0,     0,     0,    15,   237,
  18751. -   238,   239,    16,     0,   240,     0,    17,     0,   241,   242,
  18752. -     0,   243,    19,   244,   245,     0,     0,   246,   247,   248,
  18753. -   249,   250,    21,     0,    22,     0,     0,     0,     0,     0,
  18754. -     0,     0,     0,   251,     0,     0,   252,     0,     0,     0,
  18755. -     0,     0,     0,     0,   253,   254,   255,     0,     0,     0,
  18756. -     0,     0,   256,   257,   258,     0,     0,     7,     8,   259,
  18757. -    10,   440,   234,   235,     0,   236,    12,     0,     0,     0,
  18758. -     0,     0,     0,     0,     0,   261,     0,     0,     0,     0,
  18759. -     0,    15,   237,   238,   239,    16,     0,   240,     0,    17,
  18760. -     0,   241,   242,     0,   243,    19,   244,   245,     0,     0,
  18761. -   246,   247,   248,   249,   250,    21,     0,    22,     0,     0,
  18762. -     0,     0,     0,     0,     0,     0,   251,     0,     0,   895,
  18763. -     0,     0,     0,     0,     0,     0,     0,   253,   254,   896,
  18764. -     0,     0,     0,     0,     0,   256,   257,   258,     0,     0,
  18765. -     7,     8,   897,    10,   233,   234,   235,     0,   236,    12,
  18766. -     0,     0,     0,     0,     0,     0,     0,     0,   261,     0,
  18767. -     0,     0,     0,     0,    15,   237,   238,   239,    16,     0,
  18768. -   240,     0,    17,     0,   241,   242,     0,   243,    19,   244,
  18769. -   245,     0,     0,   246,   247,   248,   249,   250,    21,     0,
  18770. -    22,     0,     0,     0,     0,     0,     0,     0,     0,   251,
  18771. -     0,     0,  1183,     0,     0,     0,     0,     0,     0,     0,
  18772. -   253,   254,  1184,     0,     0,     0,     0,     0,   256,   257,
  18773. -   258,     0,     0,     7,     8,  1185,    10,   440,   234,   235,
  18774. -     0,   236,    12,     0,     0,     0,     0,     0,     0,     0,
  18775. -     0,   261,     0,     0,     0,     0,     0,    15,   237,     0,
  18776. -     0,    16,     0,   240,     0,    17,     0,   241,   242,     0,
  18777. -   243,    19,   244,   245,     0,     0,   246,   247,   248,   249,
  18778. -   250,    21,     0,    22,     0,     0,     0,     0,     0,     0,
  18779. -     0,     0,   251,     0,     0,   252,     0,     0,     0,     0,
  18780. -     0,     0,     0,   253,   254,   255,     0,     0,     0,     0,
  18781. -     0,   256,   257,   258,     0,     0,     7,     8,   441,    10,
  18782. -   440,   234,   235,     0,   236,    12,     0,     0,     0,     0,
  18783. -     0,     0,     0,     0,   261,     0,     0,     0,     0,     0,
  18784. -    15,   237,     0,     0,    16,     0,   240,     0,    17,     0,
  18785. -   241,   242,     0,   243,    19,   244,   245,     0,     0,   246,
  18786. -   247,   248,   249,   250,    21,     0,    22,     0,     0,     0,
  18787. -     0,     0,     0,     0,     0,   251,     0,     0,   252,     0,
  18788. -     0,     0,     0,     0,     0,     0,   253,   254,   255,     0,
  18789. -     0,     0,     0,     0,   256,   257,   258,     0,     0,     0,
  18790. -     0,   444,     0,     0,     0,     0,     0,     0,     0,     0,
  18791. -     0,     0,   546,     0,   469,   470,   471,   261,   472,   473,
  18792. -   474,   475,   476,   477,   478,   479,   480,   481,   482,   483,
  18793. -   484,   485,   486,   487,   488,   489,   490,   469,   470,   471,
  18794. -  1210,   472,   473,   474,   475,   476,   477,   478,   479,   480,
  18795. -   481,   482,   483,   484,   485,   486,   487,   488,   489,   490,
  18796. -   469,   470,   471,  1259,   472,   473,   474,   475,   476,   477,
  18797. +     0,   250,     0,     0,   251,     0,     0,     0,     0,   304,
  18798. +     0,     0,   252,   253,   254,     0,     0,     0,     0,     0,
  18799. +   255,   256,   257,     0,     0,     0,     0,   258,     0,     7,
  18800. +     8,   259,    10,   437,   233,   234,     0,   235,    12,     0,
  18801. +     0,     0,     0,   260,     0,     0,     0,     0,     0,     0,
  18802. +     0,     0,     0,    15,   236,   237,   238,    16,     0,   239,
  18803. +     0,    17,     0,   240,   241,     0,   242,    19,   243,   244,
  18804. +     0,     0,   245,   246,   247,   248,   249,    21,     0,    22,
  18805. +     0,     0,  1087,     0,     0,     0,     0,     0,   250,     0,
  18806. +     0,   251,     0,     0,     0,     0,     0,     0,     0,   252,
  18807. +   253,   254,     0,     0,     0,     0,     0,   255,   256,   257,
  18808. +     0,     0,     0,     0,   258,     0,     7,     8,   259,    10,
  18809. +   232,   233,   234,     0,   235,    12,     0,     0,     0,     0,
  18810. +   260,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  18811. +    15,   236,   237,   238,    16,     0,   239,     0,    17,     0,
  18812. +   240,   241,     0,   242,    19,   243,   244,     0,     0,   245,
  18813. +   246,   247,   248,   249,    21,     0,    22,     0,     0,     0,
  18814. +     0,     0,     0,     0,     0,   250,     0,     0,   251,     0,
  18815. +     0,     0,     0,     0,     0,     0,   252,   253,   254,     0,
  18816. +     0,     0,     0,     0,   255,   256,   257,     0,     0,     0,
  18817. +     0,   258,     0,     7,     8,   259,    10,   437,   233,   234,
  18818. +     0,   235,    12,     0,     0,     0,     0,   260,     0,     0,
  18819. +     0,     0,     0,     0,     0,     0,     0,    15,   236,   237,
  18820. +   238,    16,     0,   239,     0,    17,     0,   240,   241,     0,
  18821. +   242,    19,   243,   244,     0,     0,   245,   246,   247,   248,
  18822. +   249,    21,     0,    22,   463,     0,     0,     0,     0,     0,
  18823. +     0,     0,   250,     0,     0,   251,     0,     0,     0,     0,
  18824. +     0,     0,     0,   252,   253,   254,     0,     0,     0,     0,
  18825. +     0,   255,   256,   257,     0,     0,     7,     8,   464,    10,
  18826. +   437,   233,   234,     0,   235,    12,     0,     0,     0,     0,
  18827. +     0,     0,     0,     0,   260,     0,     0,     0,     0,     0,
  18828. +    15,   236,   237,   238,    16,     0,   239,     0,    17,     0,
  18829. +   240,   241,     0,   242,    19,   243,   244,     0,     0,   245,
  18830. +   246,   247,   248,   249,    21,     0,    22,     0,     0,     0,
  18831. +     0,     0,     0,     0,     0,   250,     0,     0,   251,     0,
  18832. +     0,     0,     0,     0,     0,     0,   252,   253,   254,     0,
  18833. +     0,     0,     0,     0,   255,   256,   257,     0,     0,     0,
  18834. +     0,   258,   500,     7,     8,     0,    10,   437,   233,   234,
  18835. +     0,   235,    12,     0,     0,     0,     0,   260,     0,     0,
  18836. +     0,     0,     0,     0,     0,     0,     0,    15,   236,   237,
  18837. +   238,    16,     0,   239,     0,    17,     0,   240,   241,     0,
  18838. +   242,    19,   243,   244,     0,     0,   245,   246,   247,   248,
  18839. +   249,    21,     0,    22,     0,     0,     0,     0,     0,     0,
  18840. +     0,     0,   250,     0,     0,   251,     0,     0,     0,     0,
  18841. +     0,     0,     0,   252,   253,   254,     0,     0,     0,     0,
  18842. +     0,   255,   256,   257,     0,     0,     0,     0,   258,     0,
  18843. +     7,   697,   259,    10,   437,   233,   234,     0,   235,    12,
  18844. +     0,     0,     0,     0,   260,     0,     0,     0,     0,     0,
  18845. +     0,     0,     0,     0,    15,   236,   237,   238,    16,     0,
  18846. +   239,     0,    17,     0,   240,   241,     0,   242,    19,   243,
  18847. +   244,     0,     0,   245,   246,   247,   248,   249,    21,     0,
  18848. +    22,     0,     0,     0,     0,     0,     0,     0,     0,   250,
  18849. +     0,     0,   251,     0,     0,     0,     0,     0,     0,     0,
  18850. +   252,   253,   254,     0,     0,     0,     0,     0,   255,   256,
  18851. +   257,     0,     0,     0,     0,   258,     0,     7,     8,   259,
  18852. +    10,   437,   233,   234,     0,   235,    12,     0,     0,     0,
  18853. +     0,   260,     0,     0,     0,     0,     0,     0,     0,     0,
  18854. +     0,    15,   236,   237,   238,    16,     0,   239,     0,    17,
  18855. +     0,   240,   241,     0,   242,    19,   243,   244,     0,     0,
  18856. +   245,   246,   247,   248,   249,    21,     0,    22,     0,     0,
  18857. +     0,     0,     0,     0,     0,     0,   250,     0,     0,   890,
  18858. +     0,     0,     0,     0,     0,     0,     0,   252,   253,   891,
  18859. +     0,     0,     0,     0,     0,   255,   256,   257,     0,     0,
  18860. +     0,     0,   258,     0,     7,     8,   259,    10,   437,   233,
  18861. +   234,     0,   235,    12,     0,     0,     0,     0,   260,     0,
  18862. +     0,     0,     0,     0,     0,     0,     0,     0,    15,   236,
  18863. +   237,   238,    16,     0,   239,     0,    17,     0,   240,   241,
  18864. +     0,   242,    19,   243,   244,     0,     0,   245,   246,   247,
  18865. +   248,   249,    21,     0,    22,     0,     0,     0,     0,     0,
  18866. +     0,     0,     0,   250,     0,     0,  1177,     0,     0,     0,
  18867. +     0,     0,     0,     0,   252,   253,  1178,     0,     0,     0,
  18868. +     0,     0,   255,   256,   257,     0,     0,     0,     0,  1179,
  18869. +     0,  1242,     8,   259,    10,   437,   233,   234,     0,   235,
  18870. +    12,     0,     0,     0,     0,   260,     0,     0,     0,     0,
  18871. +     0,     0,     0,     0,     0,    15,   236,   237,   238,    16,
  18872. +     0,   239,     0,    17,     0,   240,   241,     0,   242,    19,
  18873. +   243,   244,     0,     0,   245,   246,   247,   248,   249,    21,
  18874. +     0,    22,     0,     0,     0,     0,     0,     0,     0,     0,
  18875. +   250,     0,     0,   251,     0,     0,     0,     0,     0,     0,
  18876. +     0,   252,   253,   254,     0,     0,     0,     0,     0,   255,
  18877. +   256,   257,     0,     0,     0,     0,   258,     0,     7,     8,
  18878. +   259,    10,   437,   233,   234,     0,   235,    12,     0,     0,
  18879. +     0,     0,   260,     0,     0,     0,     0,     0,     0,     0,
  18880. +     0,     0,    15,   236,   237,   238,    16,     0,   239,     0,
  18881. +    17,     0,   240,   241,     0,   242,    19,   243,   244,     0,
  18882. +     0,   245,   246,   247,   248,   249,    21,     0,    22,     0,
  18883. +     0,     0,     0,     0,     0,     0,     0,   250,     0,     0,
  18884. +   251,     0,     0,     0,     0,     0,     0,     0,   252,   253,
  18885. +   254,     0,     0,     0,     0,     0,   255,   256,   257,     0,
  18886. +     0,     7,     8,   258,    10,   437,   233,   234,     0,   235,
  18887. +    12,     0,     0,     0,     0,     0,     0,     0,     0,   260,
  18888. +     0,     0,     0,     0,     0,    15,   236,   237,   238,    16,
  18889. +     0,   239,     0,    17,     0,   240,   241,     0,   242,    19,
  18890. +   243,   244,     0,     0,   245,   246,   247,   248,   249,    21,
  18891. +     0,    22,     0,     0,     0,     0,     0,     0,     0,     0,
  18892. +   250,     0,     0,   890,     0,     0,     0,     0,     0,     0,
  18893. +     0,   252,   253,   891,     0,     0,     0,     0,     0,   255,
  18894. +   256,   257,     0,     0,     7,     8,   258,    10,   232,   233,
  18895. +   234,     0,   235,    12,     0,     0,     0,     0,     0,     0,
  18896. +     0,     0,   260,     0,     0,     0,     0,     0,    15,   236,
  18897. +   237,   238,    16,     0,   239,     0,    17,     0,   240,   241,
  18898. +     0,   242,    19,   243,   244,     0,     0,   245,   246,   247,
  18899. +   248,   249,    21,     0,    22,     0,     0,     0,     0,     0,
  18900. +     0,     0,     0,   250,     0,     0,  1177,     0,     0,     0,
  18901. +     0,     0,     0,     0,   252,   253,  1178,     0,     0,     0,
  18902. +     0,     0,   255,   256,   257,     0,     0,     7,     8,  1179,
  18903. +    10,   437,   233,   234,     0,   235,    12,     0,     0,     0,
  18904. +     0,     0,     0,     0,     0,   260,     0,     0,     0,     0,
  18905. +     0,    15,   236,     0,     0,    16,     0,   239,     0,    17,
  18906. +     0,   240,   241,     0,   242,    19,   243,   244,     0,     0,
  18907. +   245,   246,   247,   248,   249,    21,     0,    22,     0,     0,
  18908. +     0,     0,     0,     0,     0,     0,   250,     0,     0,   251,
  18909. +     0,     0,     0,     0,     0,     0,     0,   252,   253,   254,
  18910. +     0,     0,     0,     0,     0,   255,   256,   257,     0,     0,
  18911. +     7,     8,   441,    10,   437,   233,   234,     0,   235,    12,
  18912. +     0,     0,     0,     0,     0,     0,     0,     0,   260,     0,
  18913. +     0,     0,     0,     0,    15,   236,   237,   238,    16,     0,
  18914. +   239,     0,    17,     0,   240,   241,     0,   242,    19,   243,
  18915. +   244,     0,     0,   245,   246,   247,   248,   249,    21,     0,
  18916. +    22,     0,     7,     8,   158,   159,   160,     0,     0,     0,
  18917. +     0,    12,     0,     0,     0,     0,     0,     7,     8,   151,
  18918. +    10,   152,     0,     0,     0,     0,    12,     0,   255,   256,
  18919. +   257,     0,     0,     0,    17,   258,     0,     0,     0,   259,
  18920. +    19,    15,     0,   510,     0,    16,     0,     0,     0,    17,
  18921. +    21,   260,    22,     0,     0,    19,     0,     0,     0,     0,
  18922. +     0,     0,     0,     0,   603,    21,     0,    22,     0,     0,
  18923. +   153,     0,     0,     0,   604,     0,     0,     0,     0,    24,
  18924. +     0,     0,    26,     0,   513,     0,     0,   605,   515,    25,
  18925. +     0,     7,     8,    92,    10,    11,     0,    26,   618,     0,
  18926. +    12,     0,    27,     0,     0,     0,     0,     0,   655,     8,
  18927. +   151,    10,   152,     0,     0,    15,     0,    12,     0,    16,
  18928. +     0,     0,     0,    17,     0,     0,     0,     0,     0,    19,
  18929. +     0,     0,    15,     0,     0,     0,    16,     0,     0,    21,
  18930. +    17,    22,     0,     0,     0,     0,    19,     0,     0,     0,
  18931. +     0,     0,     0,    24,     0,     0,    21,     0,    22,     0,
  18932. +     0,     0,     0,    25,     0,   658,     0,     0,     0,     0,
  18933. +    24,    26,     0,     0,     0,     0,    27,     0,     0,     0,
  18934. +    25,     7,     8,   151,    10,   152,     0,     0,    26,     0,
  18935. +    12,     0,     0,    27,     0,     0,     0,     0,     7,     8,
  18936. +   151,    10,   152,     0,     0,    15,     0,    12,     0,    16,
  18937. +     0,     0,     0,    17,     0,     0,     0,     0,     0,    19,
  18938. +     0,     0,    15,     0,     0,     0,    16,     0,     0,    21,
  18939. +    17,    22,     0,     0,  1099,     0,    19,     0,     0,     0,
  18940. +     0,     0,     8,    24,    10,   184,    21,     0,    22,     0,
  18941. +    12,     0,     0,    25,     0,     0,     0,     0,     0,     0,
  18942. +    24,    26,     0,     0,     0,    15,    27,     0,     0,    16,
  18943. +    25,     0,     0,    17,     0,     0,     0,     0,    26,     0,
  18944. +     0,     0,   510,    27,     0,     0,     0,     0,     0,    21,
  18945. +     0,    93,     0,     0,     0,     0,     0,     0,     0,     0,
  18946. +   466,   467,   468,   511,   469,   470,   471,   472,   473,   474,
  18947. +   475,   476,   477,   512,   479,   480,   481,   482,   483,   484,
  18948. +   485,   486,   487,   513,     0,     0,   514,   515,   466,   467,
  18949. +   468,     0,   469,   470,   471,   472,   473,   474,   475,   476,
  18950. +   477,   478,   479,   480,   481,   482,   483,   484,   485,   486,
  18951. +   487,   543,   682,   466,   467,   468,     0,   469,   470,   471,
  18952. +   472,   473,   474,   475,   476,   477,   478,   479,   480,   481,
  18953. +   482,   483,   484,   485,   486,   487,  1040,   466,   467,   468,
  18954. +     0,   469,   470,   471,   472,   473,   474,   475,   476,   477,
  18955.     478,   479,   480,   481,   482,   483,   484,   485,   486,   487,
  18956. -   488,   489,   490,   469,   470,   471,     0,   472,   473,   474,
  18957. +   466,   467,   468,  1204,   469,   470,   471,   472,   473,   474,
  18958.     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
  18959. -   485,   486,   487,   488,   489,   490,   469,   470,   471,     0,
  18960. -   472,   473,   474,   475,   476,   477,   478,   479,   480,     0,
  18961. -   482,   483,   484,   485,   486,   487,   488,   489,   490,   471,
  18962. -     0,   472,   473,   474,   475,   476,   477,   478,   479,   480,
  18963. -   481,   482,   483,   484,   485,   486,   487,   488,   489,   490,
  18964. +   485,   486,   487,   466,   467,   468,  1253,   469,   470,   471,
  18965. +   472,   473,   474,   475,   476,   477,   478,   479,   480,   481,
  18966. +   482,   483,   484,   485,   486,   487,   466,   467,   468,     0,
  18967. +   469,   470,   471,   472,   473,   474,   475,   476,   477,   478,
  18968. +   479,   480,   481,   482,   483,   484,   485,   486,   487,   468,
  18969. +     0,   469,   470,   471,   472,   473,   474,   475,   476,   477,
  18970. +   478,   479,   480,   481,   482,   483,   484,   485,   486,   487,
  18971. +   470,   471,   472,   473,   474,   475,   476,   477,   478,   479,
  18972. +   480,   481,   482,   483,   484,   485,   486,   487,   472,   473,
  18973.     474,   475,   476,   477,   478,   479,   480,   481,   482,   483,
  18974. -   484,   485,   486,   487,   488,   489,   490
  18975. +   484,   485,   486,   487,   473,   474,   475,   476,   477,   478,
  18976. +   479,   480,   481,   482,   483,   484,   485,   486,   487
  18977.  };
  18978.  
  18979.  static const short yycheck[] = {     4,
  18980. -     4,   118,   279,   137,   419,   349,   300,    12,   131,   132,
  18981. -     4,   285,   341,   300,    70,    20,    20,   108,   109,    24,
  18982. -    25,    12,    27,   392,   285,   266,    52,   300,    33,    33,
  18983. -   137,    87,    20,    71,   132,   130,   391,   137,   753,    44,
  18984. -   182,    46,    98,   162,   163,   155,   135,    52,  1161,   820,
  18985. -   993,  1189,  1052,     4,    59,     9,    56,    34,    34,     9,
  18986. -    44,    52,     9,     0,  1222,    70,    71,  1169,    51,     3,
  18987. -     4,    56,    77,    77,  1232,    60,   370,    60,     4,     0,
  18988. -    10,   410,    87,   370,     3,     4,    69,    44,   365,    77,
  18989. -    95,    96,    45,    98,    20,    36,   101,    97,    44,   104,
  18990. -   105,    62,    53,   108,   109,   110,   189,    33,    36,    10,
  18991. -    60,    95,    58,  1215,  1252,   120,   120,   122,   123,    53,
  18992. -     7,    48,    41,    10,    75,    55,   103,   103,     4,     4,
  18993. -    60,    88,   993,   137,    53,   140,   141,   142,   122,  1000,
  18994. -  1253,    75,    88,     1,  1302,   102,    12,  1285,   102,   518,
  18995. -  1150,    77,   102,    88,    55,   102,    75,    44,     7,    60,
  18996. -   302,   166,   103,    93,    83,   126,   443,     4,    55,    44,
  18997. -    55,    58,   102,    60,    88,   103,    51,    53,    53,   184,
  18998. -   184,   155,   143,    70,     4,    56,    52,     7,   959,   194,
  18999. -    65,     4,    93,   300,   120,   189,    54,   158,   287,    75,
  19000. -    75,    88,    89,    44,   919,    54,    93,    76,     3,    44,
  19001. -    85,    60,   186,    88,    89,   102,    53,     4,   103,    88,
  19002. -    89,  1334,  1335,   346,   347,   348,   231,   232,   155,   285,
  19003. -    99,    51,   103,    53,   272,   162,   163,   990,    75,   992,
  19004. -    53,   107,    51,    92,   344,    65,    56,    88,   346,   347,
  19005. -   345,     3,     4,    88,    89,    75,   339,   391,   184,   186,
  19006. -    69,   535,    75,   370,     3,     4,    53,   272,   137,    89,
  19007. -     4,   276,    44,   278,   279,   280,   395,   396,    69,    56,
  19008. -    44,   286,    92,    44,   391,     4,   396,    44,     7,   380,
  19009. -   381,   391,    44,   102,   252,   300,   300,   255,    44,    51,
  19010. -   258,    53,   286,   230,   423,    10,   264,    56,   663,   314,
  19011. -    66,  1172,   317,  1256,    53,   273,    88,   322,   401,    53,
  19012. -  1263,   326,   326,    44,    88,   654,   103,    88,    89,    85,
  19013. -    60,    88,    51,    51,    53,    55,    88,   460,   326,   439,
  19014. -  1055,   102,    88,    89,    56,   339,    65,   103,    55,    56,
  19015. -    55,    69,   279,    58,   103,    60,    75,   362,   363,   364,
  19016. -   365,   366,    56,     3,     4,   370,   370,    88,  1229,    55,
  19017. -   331,   376,   102,   378,  1317,   380,   381,   382,   362,    88,
  19018. -   364,   365,   102,   388,    44,   251,    54,   391,    93,   394,
  19019. -   259,   103,   397,   387,   150,  1256,   496,    60,   498,   499,
  19020. -   326,    41,  1263,     3,     4,   410,    69,   401,    56,   103,
  19021. -   517,   416,   417,    53,   419,   419,   102,   524,    51,   424,
  19022. -   789,     6,     7,    55,    60,    56,  1287,    12,    88,    89,
  19023. -   530,   300,   416,   788,    56,    75,     3,     4,   365,     6,
  19024. -   196,    41,   102,    83,   405,   450,   451,   452,   453,    54,
  19025. -    35,    51,    56,    53,     3,     4,  1317,   103,    27,    44,
  19026. -    60,   422,   500,    44,    55,    65,   102,    54,   395,   396,
  19027. -   102,    51,   103,   596,    41,    75,    55,     3,     4,    44,
  19028. -    60,   103,    56,    83,   102,   585,    53,   570,    88,    69,
  19029. -   448,    70,    41,   419,   823,   500,   423,   502,   596,   103,
  19030. -    54,   370,   609,    88,    53,    44,    60,    88,   615,   514,
  19031. -   515,   102,   517,   517,   808,    41,    83,    44,    92,   524,
  19032. -   524,   808,   391,    88,   798,   644,    75,    53,   284,   663,
  19033. -   556,    58,    55,    44,    83,   808,   102,   798,   867,   108,
  19034. -   109,   110,     3,     4,     5,     6,     7,    70,   103,    88,
  19035. -   555,   556,   308,   794,   102,   424,   663,    83,     3,     4,
  19036. -   929,    88,    89,    54,   647,   556,    55,    56,   685,    60,
  19037. -    44,   555,   441,   142,    35,   444,   570,    88,    89,     9,
  19038. -   449,   450,   451,   452,   453,     3,     4,     5,     6,     7,
  19039. -    51,     1,    53,    54,   463,    23,   102,   680,   467,   102,
  19040. -   466,    92,   607,   608,   609,   609,    51,    44,    53,    54,
  19041. -   615,   615,    92,    23,    88,    25,    26,     3,     4,     3,
  19042. -  1035,    58,    32,    55,    56,    51,   631,   632,   555,   634,
  19043. -   499,    60,    60,   977,    60,    53,   105,    98,    99,   100,
  19044. -    69,     1,    97,    69,    54,    55,    56,   924,    58,   654,
  19045. -    60,    88,   388,   647,   788,    41,   756,     4,   663,   663,
  19046. -    55,   397,    37,    23,    54,    25,    26,    53,    60,   769,
  19047. -    60,   771,    32,     4,    51,    70,    51,   682,     6,     7,
  19048. -   436,   788,    92,    60,    12,   792,   680,   692,   693,   694,
  19049. -   556,    88,    69,    89,    54,    55,    56,    83,    58,    60,
  19050. -    60,   808,    92,   664,    51,   105,    53,    35,   669,   670,
  19051. -   925,   926,   673,   928,    88,   992,    55,   644,    65,    58,
  19052. -    51,    89,    53,    55,    56,   825,   592,   827,    75,   829,
  19053. -    23,    70,    92,    54,    65,    56,    25,    26,   845,    60,
  19054. -  1084,  1085,   798,    27,    75,   852,    88,   752,   692,   693,
  19055. -   694,    88,   843,   844,  1098,   682,   512,    69,    89,   850,
  19056. -   851,    54,    88,    56,    69,    58,    69,    60,   773,    69,
  19057. -   775,   527,    25,    26,  1118,  1119,    54,   782,    56,    25,
  19058. -    26,   786,    60,   788,   788,   790,   791,   792,   792,     9,
  19059. -    78,    79,   103,   798,   663,   878,   879,    55,   881,    55,
  19060. -    56,    54,     3,   808,   808,   810,   764,    60,    54,  1334,
  19061. -  1335,   380,   381,   382,    60,     3,     4,    55,    56,     3,
  19062. -     4,  1165,   102,     7,   108,   109,   110,   102,    54,   102,
  19063. -    56,   103,   790,   791,    60,   102,   841,   842,   843,   844,
  19064. -   845,   845,    55,    56,   849,   850,   851,   852,   852,    37,
  19065. -    38,    55,    56,    41,   236,   237,    54,    41,   142,   102,
  19066. -    44,     7,   867,    51,    58,    53,   102,    51,   102,    53,
  19067. -  1296,  1297,   877,   102,     4,   880,    58,   882,   882,   884,
  19068. -   105,    65,    12,   752,   878,   879,   102,   881,    44,    88,
  19069. -    20,    75,   850,   851,    24,    25,   105,    27,    32,    83,
  19070. -   105,    85,   105,    33,    88,    89,   102,   581,     4,     5,
  19071. -   102,   102,   873,   782,    44,    51,    46,     6,   105,   788,
  19072. -   925,   926,    52,   928,    88,    81,    82,    44,    55,    59,
  19073. -    86,    87,    88,    89,    58,    31,    58,   895,   896,   808,
  19074. -    36,    71,     4,     5,    58,   102,    56,    77,    56,  1226,
  19075. -   102,    56,    56,   958,   958,    51,   882,    53,    56,    58,
  19076. -    55,   635,   102,  1086,   102,    95,    96,   102,   834,    31,
  19077. -    88,   101,   646,   931,    36,   105,   105,    55,   108,   109,
  19078. -   110,    60,    88,    89,    55,   990,   991,   992,    55,    51,
  19079. -   120,    53,   122,   123,    25,    26,    60,   866,     1,  1004,
  19080. -  1005,    32,  1007,    88,    58,   102,   990,    70,   992,   102,
  19081. -   140,   141,   142,    70,   102,   884,   102,    70,   102,   102,
  19082. -    23,   102,    25,    26,    55,    56,    70,    58,   897,    32,
  19083. -  1035,  1035,   958,   102,    60,    60,   166,     5,     6,     7,
  19084. -   609,    55,   102,  1337,    12,   911,   615,    60,  1131,  1132,
  19085. -  1337,    54,    55,    56,   184,    58,   102,    60,   105,   102,
  19086. -  1177,   103,   102,    83,   194,   992,  1189,    35,    89,  1030,
  19087. -  1031,   105,   343,    44,     5,     6,     7,   105,   102,   102,
  19088. -   102,    12,    34,     4,   103,   102,     7,   105,    58,    92,
  19089. -   102,   847,  1183,  1184,   663,   102,   380,   381,   382,  1182,
  19090. -   966,   231,   232,  1108,    35,  1205,   102,   102,    58,  1035,
  19091. -    88,    88,     4,     5,     6,     7,    88,   983,    10,    88,
  19092. -    12,    88,   103,    44,    75,    76,    77,    78,    79,  1252,
  19093. -    51,   105,    53,     6,    60,    27,   102,  1131,  1132,    31,
  19094. -   102,   815,   272,    35,    65,   102,  1107,   102,   278,   279,
  19095. -   280,   105,    88,   259,    75,   285,   286,     3,     4,    51,
  19096. -   102,    53,  1285,   102,    85,   103,  1127,    88,    89,   102,
  19097. -   300,  1271,   102,  1039,   102,    60,    56,    56,  1183,  1184,
  19098. -  1185,     7,    54,    14,   314,  1179,    56,   317,  1182,    58,
  19099. -   102,   865,   322,   949,   102,    41,   326,    60,    44,    60,
  19100. -   874,    93,    27,  1286,   105,    51,    44,    53,    56,   883,
  19101. -    88,   341,  1078,    56,    60,  1338,    58,    88,    58,    65,
  19102. -    88,   102,  1227,   105,    15,  1183,  1184,   102,   102,    75,
  19103. -  1337,    58,   362,   363,   364,   365,   366,    83,   102,    56,
  19104. -   370,   103,    88,  1227,    56,    56,   376,   102,   378,   102,
  19105. -   380,   381,   382,    56,    56,   102,     9,    58,   388,    56,
  19106. -    56,   102,     3,     4,   394,    88,     7,   397,    56,   375,
  19107. -    55,    91,   102,   102,   843,   844,   845,    56,   102,     9,
  19108. -   410,   850,   851,   852,   109,   110,   416,   417,   102,   419,
  19109. -    58,    56,  1286,   102,   424,    88,   102,  1258,   102,  1226,
  19110. -    41,     3,     4,    44,     9,     7,    56,     0,     0,   119,
  19111. -    51,     2,    53,   328,   808,   120,  1185,   142,   823,    99,
  19112. -   450,   451,   452,   453,    65,   609,   120,  1150,  1160,  1191,
  19113. -   130,   615,  1337,  1337,    75,   441,   512,  1203,   444,    41,
  19114. -   446,   447,    83,   449,    85,  1019,  1020,    88,    89,    51,
  19115. -   463,    53,  1087,     4,   991,   626,     7,  1203,  1032,  1033,
  19116. -   592,   467,   803,    65,   688,   471,   867,    33,    33,   654,
  19117. -   500,   813,   502,    75,     4,   958,   417,   543,   882,   663,
  19118. -   880,    83,   801,    12,   514,   515,    88,   517,   500,   837,
  19119. -    20,   497,  1276,    44,   524,  1310,     4,   503,     6,     7,
  19120. -    51,  1312,    53,    33,    12,   535,    73,    74,    75,    76,
  19121. -    77,    78,    79,   884,    65,    -1,    46,    10,    -1,    27,
  19122. -    -1,   370,    -1,    31,    75,   555,   556,    35,    -1,    59,
  19123. -    -1,    -1,    25,    26,    85,    -1,    -1,    88,    89,    32,
  19124. -    -1,    71,    -1,    51,    -1,    53,    76,    77,    -1,    -1,
  19125. -    -1,    44,    -1,    -1,    -1,    -1,  1130,    -1,    88,    89,
  19126. -    -1,    -1,    55,    56,    -1,    58,    96,    60,  1337,    99,
  19127. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,   607,   608,   609,
  19128. -    88,    -1,    -1,    -1,   755,   615,    -1,    -1,    -1,     4,
  19129. -   120,     6,     7,   123,    -1,    88,    89,    12,    -1,    92,
  19130. -    93,   631,   632,    -1,   634,    -1,    -1,   137,    -1,   102,
  19131. -    -1,    -1,    27,    -1,    -1,    -1,    31,    -1,    -1,    -1,
  19132. -    35,    -1,  1196,  1197,   654,  1199,  1200,    -1,    -1,    -1,
  19133. -    -1,    -1,    -1,   663,    -1,    -1,    51,    -1,    53,  1108,
  19134. -    -1,   812,    -1,    -1,     1,    -1,     3,     4,     5,     6,
  19135. -     7,    -1,   682,    -1,   184,    12,   381,   382,    -1,   843,
  19136. -   844,   845,   692,   693,   694,    -1,   850,   851,   852,    -1,
  19137. -    27,    -1,    -1,    -1,    31,    -1,    -1,    -1,    35,    36,
  19138. -    -1,    -1,    -1,    -1,    41,    -1,   857,    -1,    -1,    -1,
  19139. -    -1,    -1,    -1,    -1,    51,    -1,    53,    -1,    -1,    56,
  19140. -    -1,   231,    -1,    60,     4,    -1,     6,     7,    65,    -1,
  19141. -   137,    -1,    12,    -1,  1183,  1184,  1185,    -1,    75,    -1,
  19142. -    -1,    -1,   752,    -1,    -1,    -1,    83,    -1,    -1,   259,
  19143. -    -1,    88,  1306,    -1,    -1,    35,    -1,    -1,    -1,   910,
  19144. -   911,    -1,   272,   773,    44,   775,   103,    -1,    -1,    -1,
  19145. -   280,    51,   782,    53,   760,    -1,   786,    -1,   788,    -1,
  19146. -   790,   791,   792,    -1,    71,    65,    -1,    -1,   798,    76,
  19147. -   300,    -1,    -1,    -1,    -1,    75,    -1,    -1,   808,    -1,
  19148. -   810,    88,    89,    -1,    -1,    85,   792,    -1,    88,    89,
  19149. -    -1,    -1,    99,   823,    -1,   966,   326,    -1,    -1,   524,
  19150. -    -1,    -1,    -1,     3,     4,    -1,    -1,    -1,    -1,    -1,
  19151. -    -1,   841,   842,   843,   844,   845,    -1,    -1,    -1,   849,
  19152. -   850,   851,   852,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19153. -   137,     4,    -1,   363,     7,    -1,   366,   867,    -1,    -1,
  19154. -   370,    41,    -1,    -1,    -1,    -1,   852,   877,    -1,    -1,
  19155. -   880,    51,   882,    53,   884,    -1,    56,    -1,    -1,    -1,
  19156. -   866,   391,    -1,    -1,    -1,    65,    -1,    -1,    -1,  1040,
  19157. -    -1,    44,    -1,    -1,  1045,    75,    -1,    -1,    51,    -1,
  19158. -    53,    -1,    -1,    83,   609,    -1,    -1,   417,    88,   419,
  19159. -   615,   897,    65,    -1,   424,   925,   926,    -1,   928,    -1,
  19160. -    -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19161. -    -1,   441,    85,    -1,   444,    88,    89,   344,    -1,   449,
  19162. -   450,   451,   452,   453,  1108,    -1,    -1,    -1,   958,    -1,
  19163. -    -1,    -1,     4,   463,     6,     7,    -1,   467,   663,    -1,
  19164. -    12,    -1,    -1,    24,    25,    -1,    -1,    -1,    -1,  1120,
  19165. -  1121,    -1,   259,    -1,    -1,    27,    -1,    -1,    -1,    31,
  19166. -   990,   991,   992,    35,   391,   272,    -1,    -1,    -1,   499,
  19167. -   500,    -1,   697,    -1,  1004,  1005,   982,  1007,  1149,    51,
  19168. -    -1,    53,    54,    -1,    -1,    -1,    -1,   517,    -1,    -1,
  19169. -    71,    -1,    -1,   300,   524,    76,    -1,    -1,    -1,  1183,
  19170. -  1184,  1185,    -1,     3,     4,  1035,    -1,    88,    89,    -1,
  19171. -    -1,    -1,   439,    -1,    -1,    -1,    88,    -1,    99,    -1,
  19172. -     3,     4,    -1,  1194,     7,    -1,    -1,   108,   109,    -1,
  19173. -  1201,  1202,    -1,    -1,    -1,  1041,  1042,  1043,  1044,  1210,
  19174. -    -1,    41,    -1,    -1,    -1,    -1,    -1,  1053,    -1,    -1,
  19175. -    -1,    51,    -1,    53,    -1,    -1,   137,    -1,    41,   140,
  19176. -   141,    44,    -1,   370,    -1,    65,   791,   792,    51,   496,
  19177. -    53,   498,   499,    -1,    -1,    75,    -1,    -1,  1108,   609,
  19178. -    -1,  1087,    65,    83,   391,   615,    -1,    -1,    88,  1095,
  19179. -    -1,    -1,    75,    -1,    -1,    -1,    -1,   524,  1269,  1270,
  19180. -    83,    -1,    85,   530,    -1,    88,    89,    71,    72,    73,
  19181. -    74,    75,    76,    77,    78,    79,    -1,   424,    -1,   844,
  19182. -   845,    -1,    -1,    -1,    -1,    -1,   851,   852,    -1,    -1,
  19183. -    -1,    -1,    -1,   663,   441,    -1,    -1,   444,    -1,    -1,
  19184. -    -1,    -1,   449,   450,   451,   452,   453,    -1,    -1,    -1,
  19185. -    -1,    -1,    -1,  1183,  1184,  1185,   463,    -1,   585,    -1,
  19186. -   467,    -1,    -1,  1169,     1,  1336,     3,     4,     5,     6,
  19187. -     7,   896,   897,    -1,    -1,    12,    -1,    -1,   259,  1185,
  19188. -    -1,    -1,    -1,    -1,  1190,  1191,    -1,    -1,   615,    -1,
  19189. -    27,   272,   499,   500,    31,    -1,    -1,  1227,    35,    36,
  19190. -    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,  1215,
  19191. -   517,    -1,    -1,    -1,    51,    -1,    53,   524,    -1,   300,
  19192. -    -1,    -1,   752,    60,    -1,    -1,   756,    -1,    65,    -1,
  19193. -    -1,     1,    -1,     3,     4,     5,     6,     7,    75,    -1,
  19194. -    -1,    -1,    12,    -1,    -1,     4,    83,     6,     7,    -1,
  19195. -    -1,    88,   782,    12,    -1,    25,    26,    27,   788,    -1,
  19196. -    -1,    31,   792,    -1,    -1,    35,   103,    -1,    27,    39,
  19197. -   697,    41,    31,    -1,  1280,    45,    35,    -1,   808,    -1,
  19198. -   810,    51,    -1,    53,    -1,    -1,    56,    -1,    -1,   370,
  19199. -  1296,  1297,    51,    -1,    53,    65,    -1,    -1,    -1,   380,
  19200. -   381,    -1,   609,  1309,    -1,    75,   836,  1337,   615,    -1,
  19201. -   391,    -1,    -1,    83,    -1,   845,    -1,    -1,    88,    -1,
  19202. -    -1,    -1,   852,    -1,    94,    95,    -1,     3,     4,   756,
  19203. -    -1,     7,    -1,    -1,    -1,    -1,   866,    -1,    -1,    -1,
  19204. -    -1,    -1,   769,   424,   771,    -1,    -1,    -1,    -1,    -1,
  19205. -    -1,    -1,   882,    -1,   884,    -1,   663,    -1,    -1,    -1,
  19206. -   441,    -1,    -1,   444,    -1,    41,    -1,   897,   449,   450,
  19207. -   451,   452,   453,    -1,    -1,    51,    -1,    53,    -1,    -1,
  19208. -    -1,    -1,   463,  1108,    -1,    -1,   467,    -1,    -1,    65,
  19209. -     1,    -1,     3,     4,     5,     6,     7,    -1,   825,    75,
  19210. -   827,    12,   829,    -1,    -1,    -1,    -1,    83,    -1,    69,
  19211. -    -1,    -1,    88,    -1,    -1,    -1,    27,    -1,   499,   500,
  19212. -    31,    -1,    -1,    -1,    35,    36,    -1,    76,   958,    -1,
  19213. -    41,    -1,    -1,   514,   515,    -1,   517,    -1,    -1,    -1,
  19214. -    51,    -1,    53,   524,    -1,   752,    -1,    -1,    -1,    60,
  19215. -    99,    -1,    -1,    -1,    65,    -1,    -1,   117,    -1,  1184,
  19216. -  1185,   991,    -1,   993,    75,    -1,    -1,    -1,    -1,    -1,
  19217. -  1000,    -1,    83,    -1,    -1,   782,   136,    88,    -1,    -1,
  19218. -    -1,   788,    -1,    -1,    -1,   792,    -1,    -1,   137,    -1,
  19219. -    -1,   151,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19220. -    -1,   808,    -1,    -1,    -1,  1035,     1,    -1,     3,     4,
  19221. -     5,     6,     7,    -1,     3,     4,    -1,    12,     7,    -1,
  19222. -    -1,    -1,    -1,    -1,    -1,    -1,   607,   608,   609,    -1,
  19223. -    -1,    -1,    27,    -1,   615,    -1,    31,    -1,   845,    -1,
  19224. -    35,    36,    -1,    -1,    -1,   852,    41,    -1,    -1,    -1,
  19225. -    -1,    -1,    41,    -1,    -1,    44,    51,  1087,    53,   866,
  19226. -    -1,    56,    51,    -1,    53,    60,    -1,    -1,     3,     4,
  19227. -    65,    -1,    -1,    -1,    -1,    -1,    65,   884,    -1,    -1,
  19228. -    75,    -1,   663,    -1,    -1,    -1,    75,    -1,    83,    -1,
  19229. -   897,    -1,    -1,    88,    83,    -1,    85,    -1,    -1,    88,
  19230. -    89,    -1,     4,     5,     6,     7,    41,    -1,   103,    44,
  19231. -    12,   260,    -1,    -1,    -1,    -1,    51,    -1,    53,    -1,
  19232. -    -1,    -1,    -1,    -1,    -1,    27,    -1,    -1,    -1,    31,
  19233. -    65,  1161,     1,    35,     3,     4,     5,     6,     7,  1169,
  19234. -    75,    -1,  1172,    12,    -1,    -1,    -1,    -1,    83,    51,
  19235. -    85,    53,    -1,    88,    89,  1185,    -1,    -1,    27,    -1,
  19236. -  1190,  1191,    31,    -1,    -1,    -1,    35,     3,     4,    -1,
  19237. -    -1,   752,    41,    -1,    -1,    -1,    45,    -1,    -1,    -1,
  19238. -    -1,  1108,    51,    -1,    53,  1215,    -1,    56,    -1,    -1,
  19239. -    -1,    -1,  1222,    -1,   343,   344,    65,    -1,    -1,  1229,
  19240. -    -1,   782,  1232,    -1,    -1,    41,    75,   788,    -1,   790,
  19241. -   791,   792,    -1,    -1,    83,    51,    -1,    53,    -1,    88,
  19242. -    56,    -1,    -1,  1253,   384,    94,  1256,   808,    -1,    65,
  19243. -   390,    -1,    -1,  1263,    -1,    -1,    -1,    -1,    -1,    75,
  19244. -    -1,    -1,   391,    -1,    -1,    -1,    -1,    83,    -1,    -1,
  19245. -    -1,    -1,    88,     4,     5,     6,     7,  1287,    -1,    -1,
  19246. -    -1,    12,   843,   844,   845,   414,    -1,    -1,    -1,   850,
  19247. -   851,   852,  1302,    -1,   434,   435,    27,   437,  1205,    -1,
  19248. -    31,    -1,    -1,    -1,    35,   866,    -1,  1317,    -1,    -1,
  19249. -   439,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19250. -    51,    -1,    53,   884,  1334,  1335,    -1,  1337,     3,     4,
  19251. -    -1,    -1,     7,    -1,   463,    -1,   897,   466,    69,    -1,
  19252. -   469,   470,    -1,   472,   473,   474,   475,   476,   477,   478,
  19253. -   479,   480,   481,   482,   483,   484,   485,   486,   487,   488,
  19254. -   489,   490,    -1,    -1,  1271,    -1,    41,   496,    -1,   498,
  19255. -   499,    -1,    -1,    -1,    -1,    -1,    51,    -1,    53,    -1,
  19256. -   520,   521,  1169,    -1,     4,   525,     6,    -1,    -1,    -1,
  19257. -    65,    -1,    12,    -1,    -1,   524,    -1,    -1,  1185,    -1,
  19258. -    75,   530,    -1,  1190,  1191,    -1,    -1,    27,    83,    -1,
  19259. -    -1,    31,    -1,    88,    -1,    35,   545,   546,    -1,    -1,
  19260. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1215,    -1,
  19261. -    -1,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,
  19262. +     4,   188,   265,   136,   416,   284,   117,    12,   108,   109,
  19263. +     4,   339,    12,   299,     4,    20,    20,   389,   388,    24,
  19264. +    25,    52,    27,   284,   131,   347,   749,    71,    33,    33,
  19265. +    20,    20,   154,   161,   162,   130,   131,   134,   129,    44,
  19266. +   299,    46,   816,    33,   136,   988,  1155,    52,  1047,   181,
  19267. +  1183,   299,    52,    34,    59,   988,     9,     1,     9,     4,
  19268. +     9,    48,   995,    55,    88,    70,    71,   278,  1216,    70,
  19269. +    34,   154,    77,    77,    10,     3,     4,    44,  1226,   407,
  19270. +     7,    10,    87,    55,    55,    56,    87,    77,    77,    36,
  19271. +    95,    96,     4,    98,     3,     4,   101,    98,    70,   104,
  19272. +   105,    36,   185,   108,   109,    51,     4,    60,    53,   368,
  19273. +    54,   103,     4,  1246,   119,   119,   121,   122,    44,    55,
  19274. +   368,    62,   103,    69,    60,    53,    55,    54,    95,   119,
  19275. +    75,    60,   136,    60,   139,   140,   141,    12,  1247,   103,
  19276. +    56,    53,     4,   515,    53,  1144,  1279,    75,  1296,   102,
  19277. +   337,   102,   363,   102,   121,    53,   103,    93,    76,    51,
  19278. +   165,    53,    88,     4,    93,    92,   102,   154,   103,   301,
  19279. +    88,    89,     4,    65,   161,   162,   102,    52,   183,   183,
  19280. +   954,    99,  1163,    75,   125,    27,    44,   103,   193,   286,
  19281. +   913,    53,    44,   183,   188,    60,    51,    89,   185,    56,
  19282. +    58,   142,     0,    44,    69,    60,    58,   299,    55,    54,
  19283. +    51,   398,    53,    75,    69,    60,   157,    44,   136,  1328,
  19284. +  1329,    53,    56,    70,    65,   230,   231,   271,  1209,   440,
  19285. +    88,    89,   107,  1166,    75,     0,    88,   344,   345,     6,
  19286. +     7,    55,   229,    75,    85,    12,   103,    88,    89,   344,
  19287. +   345,   346,   343,   532,     4,   388,     3,     4,    88,    89,
  19288. +    60,    88,    89,    66,   392,   393,   271,   109,    35,   103,
  19289. +   275,   393,   277,   278,   279,   102,   368,    44,   378,   379,
  19290. +   285,     4,    85,   284,     7,    56,    56,    44,   102,   659,
  19291. +  1223,   278,   420,    56,   299,   299,   388,    44,    51,   141,
  19292. +   103,    23,   102,    53,    51,    60,    53,  1250,   313,    44,
  19293. +   985,   316,   987,    56,  1257,   320,    69,  1250,   285,   324,
  19294. +   324,    88,   650,    55,  1257,    75,    97,  1050,    51,    92,
  19295. +    53,    88,    89,   103,   324,   324,    55,    10,    60,    88,
  19296. +   258,    88,    65,   337,    45,   102,   149,   102,  1281,   102,
  19297. +    56,    56,    75,    88,     4,   360,   361,   362,   363,   364,
  19298. +   103,    56,   457,   368,   368,    60,    89,     3,  1311,   374,
  19299. +   102,   376,    56,   378,   379,   250,   363,   136,  1311,   566,
  19300. +   385,   299,    55,   102,   388,    58,   391,    60,   329,   394,
  19301. +   384,     4,   195,   360,     7,   362,   363,   103,   103,     3,
  19302. +     4,    51,   407,    53,   398,   392,   393,    55,   413,   414,
  19303. +     1,   416,   416,   785,   784,    65,   421,    55,    56,   103,
  19304. +    93,    54,   514,    69,    44,    75,   416,    60,   258,   521,
  19305. +    44,    44,    23,   420,    25,    26,    88,    41,    51,    44,
  19306. +    53,    32,   447,   448,   449,   450,   413,    55,    56,    53,
  19307. +   368,    44,    65,   497,   102,    44,   643,    27,    44,    92,
  19308. +    54,   402,    75,    54,    55,    56,    60,    58,    88,    60,
  19309. +   388,    75,    85,    55,    88,    88,    89,    44,   419,    83,
  19310. +   283,    44,    54,    88,    89,   592,     3,     4,    70,   676,
  19311. +    56,   819,   497,    51,   499,    88,    89,   592,    92,    88,
  19312. +    89,    92,    88,   421,   307,    44,   511,   512,     4,   514,
  19313. +   514,     7,   640,   605,    56,   794,   521,   521,   804,   611,
  19314. +   438,    88,   553,   441,    41,    88,   659,   790,   446,   447,
  19315. +   448,   449,   450,   794,   862,    60,    53,   379,   108,   109,
  19316. +    44,    54,   460,   373,    69,   804,   464,   552,   553,    88,
  19317. +    92,   923,    44,   553,    58,    51,   804,    53,    75,     3,
  19318. +     4,    44,     6,   103,   385,   552,    83,   659,    54,    65,
  19319. +   681,   141,   566,   394,    55,    25,    26,    58,   496,    75,
  19320. +   102,     3,     4,   342,    88,   552,     3,     4,   463,    70,
  19321. +    55,    56,     3,     4,     3,     4,    88,    41,   603,   604,
  19322. +   605,   605,   102,    51,    54,    88,   611,   611,   438,    53,
  19323. +    60,   441,    60,   443,   444,   102,   446,    51,  1030,    41,
  19324. +   102,    69,   627,   628,    41,   630,    60,    25,    26,   388,
  19325. +   433,    53,    41,    37,   464,    69,    53,     9,   468,    83,
  19326. +    51,   102,    53,    54,    53,   650,    54,    51,    56,   643,
  19327. +   972,   784,    60,   640,   659,   659,    54,   103,    75,     6,
  19328. +     7,    83,    60,    92,   494,    12,    83,     4,     3,     6,
  19329. +   500,    97,    27,   678,    83,    12,    60,   436,   553,   521,
  19330. +    25,    26,   676,   688,   689,   690,   873,   874,    35,   876,
  19331. +    27,   678,   784,   105,    31,    88,   788,    89,    35,   136,
  19332. +     3,     4,     5,     6,     7,   105,   509,   918,     5,     6,
  19333. +     7,    51,   804,   588,    51,    12,    53,    78,    79,   660,
  19334. +    60,   524,    55,    56,   665,   666,    55,    56,   669,    69,
  19335. +   919,   920,    35,   922,   493,    89,   495,   496,    35,   839,
  19336. +   840,   659,    60,   748,    88,   845,   846,    88,    51,    88,
  19337. +    53,    54,    88,   108,   109,   847,  1078,  1079,    69,    54,
  19338. +    69,    56,   521,   605,   769,    60,   771,    69,   527,   611,
  19339. +  1092,    69,    54,   778,    56,     9,   987,   782,    60,   784,
  19340. +   784,   786,   787,   788,   788,   102,   141,   103,    23,   794,
  19341. +  1112,  1113,    55,   794,   102,    98,    99,   100,   102,   804,
  19342. +   804,   806,   102,     3,     4,     5,     6,     7,   378,   379,
  19343. +     3,     3,     4,   103,   688,   689,   690,   659,    54,    54,
  19344. +    58,    56,   581,    58,     7,    60,    55,    56,    55,    56,
  19345. +   748,   102,   837,   838,   839,   840,   102,  1159,   102,   844,
  19346. +   845,   846,   847,   847,    58,    37,    38,  1328,  1329,    41,
  19347. +   105,   693,   611,    53,   102,     4,   105,   862,    88,    51,
  19348. +   778,    53,    32,    12,   235,   236,   784,   872,  1290,  1291,
  19349. +   875,    20,   877,   877,   879,    24,    25,   105,    27,   873,
  19350. +   874,   105,   876,   102,    33,   102,   804,   877,    75,    76,
  19351. +    77,    78,    79,     4,   102,    44,     7,    46,    51,    25,
  19352. +    26,     6,   105,    52,    88,   342,    32,    44,    58,    55,
  19353. +    59,     5,     6,     7,   919,   920,    58,   922,    12,    58,
  19354. +    56,    56,    71,    56,    56,    56,   756,   868,    77,    55,
  19355. +    56,    55,    58,    44,   693,   940,   941,   102,  1125,  1126,
  19356. +    51,    35,    53,   861,    58,   787,    95,    96,   953,   953,
  19357. +   102,   388,   101,    55,    65,   830,   105,   102,   788,   108,
  19358. +   109,   879,   102,   953,    75,     3,     4,   105,    88,     7,
  19359. +   119,    60,   121,   122,    85,    55,    55,    88,    89,    60,
  19360. +   985,   986,   987,    58,    88,  1080,   102,   102,    70,  1176,
  19361. +   139,   140,   141,   752,   999,  1000,   102,  1002,   840,   436,
  19362. +   987,   102,   102,    41,   846,   847,   765,   102,   767,  1220,
  19363. +   102,    70,    70,    51,    70,    53,   165,   847,   985,   102,
  19364. +   987,    60,    55,   378,   379,  1030,  1030,    65,    60,   102,
  19365. +   905,   861,    60,   102,   183,   605,   102,    75,   105,   842,
  19366. +  1030,   611,   103,    89,   193,    83,    83,   102,   105,   891,
  19367. +    88,    44,   102,   102,     3,     4,   493,   105,   495,   496,
  19368. +  1171,   105,   821,   103,   823,    34,   825,   102,     4,     5,
  19369. +     6,     7,  1331,   102,    10,   102,    12,  1177,  1178,   102,
  19370. +   102,   230,   231,  1331,  1025,  1026,   961,    58,  1183,   659,
  19371. +   527,    27,    41,  1280,    58,    31,   102,  1102,    88,    35,
  19372. +    88,    88,    51,   978,    53,     7,    88,    56,    10,    88,
  19373. +   105,   103,     6,   102,   105,    51,    65,    53,   102,   102,
  19374. +    60,   102,   271,   103,   102,   102,    75,   102,   277,   278,
  19375. +   279,  1125,  1126,    88,    83,   284,   285,   102,    60,    88,
  19376. +    56,   944,    44,    56,   581,     7,    54,   977,    14,    56,
  19377. +   299,  1246,    58,    55,   102,   102,    58,    93,    60,  1034,
  19378. +  1101,   341,    60,    60,   313,    44,   105,   316,    70,    88,
  19379. +    56,   320,  1177,  1178,  1179,   324,    56,    88,    88,  1173,
  19380. +  1121,    58,  1176,    58,  1279,   102,    88,    89,   102,    15,
  19381. +   339,    93,    56,   105,     4,     5,    56,  1072,   102,   102,
  19382. +   102,    56,   103,   102,    56,    56,  1036,  1037,  1038,  1039,
  19383. +   102,   360,   361,   362,   363,   364,  1221,    58,  1048,   368,
  19384. +    58,    31,     9,    56,   102,   374,    36,   376,   102,   378,
  19385. +   379,    56,    56,  1220,    88,    55,   385,  1332,    56,  1331,
  19386. +    88,    51,   391,    53,   102,   394,     4,     5,    91,   102,
  19387. +   605,  1081,   102,   102,  1221,    58,   611,   102,   407,  1089,
  19388. +  1102,  1179,     9,    56,   413,   414,     1,   416,   102,   839,
  19389. +   840,   102,   421,    31,    56,   845,   846,   847,    36,     9,
  19390. +     0,     0,   118,   326,     2,     1,  1280,   119,    23,   804,
  19391. +    25,    26,   119,    51,   129,    53,   819,    32,   447,   448,
  19392. +   449,   450,    99,   460,   659,  1144,  1154,    23,  1185,    25,
  19393. +    26,  1252,   509,  1081,   986,   752,    32,   684,  1197,    54,
  19394. +    55,    56,  1197,    58,   799,    60,  1331,  1331,   765,   588,
  19395. +   767,    33,    33,  1163,   862,   650,  1178,  1179,    54,    55,
  19396. +    56,   809,    58,  1102,    60,   877,   953,    12,   497,  1179,
  19397. +   499,     4,   414,   497,  1184,  1185,   875,    92,     4,     5,
  19398. +     6,     7,   511,   512,    10,   514,    12,    20,   540,   797,
  19399. +  1270,   833,   521,  1304,  1306,    -1,    92,    44,   879,  1209,
  19400. +    33,    27,   368,   532,   821,    31,   823,    -1,   825,    35,
  19401. +    -1,     3,     4,    46,    71,    72,    73,    74,    75,    76,
  19402. +    77,    78,    79,   552,   553,    51,    59,    53,    -1,    -1,
  19403. +    -1,    -1,    -1,  1331,    81,    82,    -1,    -1,    71,    86,
  19404. +    87,    88,    89,    76,    77,    -1,    -1,    -1,    -1,    41,
  19405. +    -1,    -1,    44,    -1,    -1,    88,    89,    -1,    -1,    51,
  19406. +  1199,    53,   622,    96,  1274,    -1,    99,    -1,    60,    -1,
  19407. +    -1,    -1,    -1,    65,   603,   604,   605,    -1,    -1,    -1,
  19408. +  1290,  1291,   611,    75,    -1,    -1,   119,    -1,    -1,   122,
  19409. +    -1,    83,    -1,  1303,    -1,    -1,    88,    -1,   627,   628,
  19410. +    -1,   630,    -1,   136,   839,   840,    -1,    -1,    -1,    -1,
  19411. +   845,   846,   847,    -1,    -1,    -1,     4,     5,     6,     7,
  19412. +    -1,   650,    -1,    -1,    12,    -1,  1265,    -1,     3,     4,
  19413. +   659,    -1,     7,   139,   140,   141,    71,    -1,    -1,    27,
  19414. +    -1,    76,    -1,    31,    -1,    -1,    -1,    35,    -1,   678,
  19415. +   183,    -1,  1102,    88,    89,    -1,    -1,    -1,    -1,   688,
  19416. +   689,   690,    -1,    51,    99,    53,    41,    -1,    -1,    44,
  19417. +    -1,    -1,    -1,    -1,    -1,    -1,    51,    -1,    53,    -1,
  19418. +    -1,    69,    -1,    -1,    -1,    -1,   251,    24,    25,   254,
  19419. +    65,   751,   257,    -1,    -1,    -1,    -1,   230,   263,    -1,
  19420. +    75,   136,    -1,    -1,    -1,    -1,    -1,   272,    83,    -1,
  19421. +    85,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,   748,
  19422. +    -1,    -1,    -1,    -1,    -1,   258,    -1,  1177,  1178,  1179,
  19423. +    -1,    -1,    -1,     4,    71,     6,     7,    -1,   271,    76,
  19424. +   769,    12,   771,    -1,    -1,    -1,   279,    -1,   808,   778,
  19425. +    -1,    88,    89,   782,    -1,   784,    27,   786,   787,   788,
  19426. +    31,    -1,    99,    -1,    35,   794,   299,    -1,    -1,    -1,
  19427. +    -1,   108,   109,    -1,    -1,   804,    -1,   806,    -1,    -1,
  19428. +    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,   577,    -1,
  19429. +   819,   324,   852,    -1,    -1,    -1,    -1,    -1,    -1,   136,
  19430. +    -1,    -1,   139,   140,    -1,    -1,    -1,    -1,   837,   838,
  19431. +   839,   840,    -1,    -1,    -1,   844,   845,   846,   847,    -1,
  19432. +    -1,    -1,    -1,   258,    -1,    -1,    -1,    -1,   361,    -1,
  19433. +    -1,   364,    -1,   862,    -1,   368,   271,    -1,    -1,    -1,
  19434. +    -1,    -1,   631,   872,   904,   905,   875,    -1,   877,    -1,
  19435. +   879,    -1,    -1,   642,    -1,   388,    73,    74,    75,    76,
  19436. +    77,    78,    79,    -1,   299,    -1,    -1,  1102,   374,    -1,
  19437. +   376,    69,   378,   379,    -1,    -1,    -1,    -1,    -1,    -1,
  19438. +   445,   414,  1199,   416,    -1,   391,    -1,    -1,   421,    -1,
  19439. +   919,   920,    -1,   922,    -1,    -1,    -1,     3,     4,    -1,
  19440. +    -1,   961,    -1,    -1,    -1,   438,    -1,   413,   441,    -1,
  19441. +    -1,   940,   941,   446,   447,   448,   449,   450,   116,    -1,
  19442. +    -1,   258,    -1,    -1,   953,    -1,    -1,   460,    -1,    -1,
  19443. +    -1,   464,    -1,   368,   271,    41,    -1,   135,    44,    -1,
  19444. +    -1,    -1,  1177,  1178,  1179,    51,    -1,    53,  1265,    -1,
  19445. +    -1,    -1,   150,   388,    -1,    -1,   985,   986,   987,    65,
  19446. +    -1,    -1,   299,   496,   497,    -1,    -1,    -1,    -1,    75,
  19447. +   999,  1000,    -1,  1002,    -1,  1035,    -1,    83,    -1,    85,
  19448. +  1040,   514,    88,    89,    -1,    -1,   421,    -1,   521,    -1,
  19449. +    -1,    -1,    -1,    -1,     1,    -1,     3,     4,     5,     6,
  19450. +     7,  1030,    -1,   438,    -1,    12,   441,    -1,    -1,    -1,
  19451. +    -1,   446,   447,   448,   449,   450,    -1,    -1,    25,    26,
  19452. +    27,    -1,   811,    -1,    31,   460,    -1,    -1,    35,   464,
  19453. +    -1,   368,    39,    -1,    41,    -1,    -1,    -1,    45,    -1,
  19454. +    -1,   378,   379,    -1,    51,    -1,    53,    -1,    -1,    56,
  19455. +    -1,   388,    -1,    -1,  1114,  1115,    -1,    -1,    65,    -1,
  19456. +    -1,   496,   497,    -1,    -1,    -1,    -1,    -1,    75,    -1,
  19457. +    -1,   860,   605,  1102,    -1,    -1,    83,    -1,   611,   514,
  19458. +   869,    88,    -1,  1143,   421,    -1,   521,    94,    95,   878,
  19459. +    -1,    -1,    -1,     3,     4,    -1,    -1,   603,   604,   605,
  19460. +    -1,   438,    -1,    -1,   441,   611,    -1,    -1,    -1,   446,
  19461. +   447,   448,   449,   450,    -1,    -1,    -1,    -1,    10,    -1,
  19462. +    -1,   627,   628,   460,   630,    -1,   659,   464,  1188,    -1,
  19463. +    -1,    41,    -1,    25,    26,  1195,  1196,    -1,    -1,    -1,
  19464. +    32,    51,    -1,    53,  1204,    -1,    56,    -1,  1177,  1178,
  19465. +  1179,    -1,    44,   659,    -1,    65,    -1,    -1,    -1,   496,
  19466. +   497,    -1,    -1,    55,    56,    75,    58,    -1,    60,     4,
  19467. +   605,    -1,     7,    83,   511,   512,   611,   514,    88,    -1,
  19468. +    -1,    -1,    -1,   381,   521,    -1,    -1,    -1,    -1,   387,
  19469. +    -1,    -1,  1221,    -1,    -1,   760,    88,    89,    -1,    -1,
  19470. +    92,    93,    -1,  1263,  1264,    -1,    -1,    -1,    -1,    44,
  19471. +   102,    -1,    -1,    -1,    -1,   748,    51,    -1,    53,   752,
  19472. +    -1,   786,   787,    -1,   659,  1014,  1015,    -1,    -1,    -1,
  19473. +    65,    -1,    -1,   431,   432,    -1,   434,    -1,  1027,  1028,
  19474. +    75,    -1,    -1,    -1,    -1,   778,    -1,    -1,    -1,    -1,
  19475. +    85,   784,    -1,    88,    89,   788,     4,     5,     6,     7,
  19476. +    -1,    -1,    -1,    -1,    12,    -1,   603,   604,   605,    -1,
  19477. +  1330,   804,    -1,   806,   611,    -1,    -1,    -1,    -1,    27,
  19478. +   845,   846,    -1,    31,    -1,    -1,    -1,    35,    -1,    -1,
  19479. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   832,
  19480. +    -1,    -1,  1331,    51,    -1,    53,    -1,    -1,   277,   278,
  19481. +   279,    -1,    -1,   748,   847,    -1,    -1,    -1,    -1,   517,
  19482. +   518,    -1,   659,    -1,   522,   890,   891,    -1,   861,    -1,
  19483. +    -1,   837,   838,   839,   840,  1124,     3,     4,   844,   845,
  19484. +   846,   847,    -1,   778,   877,    -1,   879,    -1,    -1,   784,
  19485. +    -1,    -1,    -1,   788,    -1,    -1,    -1,    -1,    -1,    -1,
  19486. +   925,    -1,    -1,    -1,    -1,    -1,   872,    -1,    -1,   804,
  19487. +    -1,    -1,    -1,    -1,    41,   940,   941,    -1,    -1,    -1,
  19488. +    -1,    -1,    -1,    -1,    51,    -1,    53,    -1,    -1,    -1,
  19489. +    -1,   360,    -1,   362,   363,   364,    -1,    -1,    65,   597,
  19490. +   598,  1190,  1191,    -1,  1193,  1194,    -1,    -1,    75,   607,
  19491. +    -1,   748,   847,    -1,    -1,   613,    83,    -1,    -1,    -1,
  19492. +   953,    88,    -1,    -1,    -1,    -1,   861,    -1,    -1,    -1,
  19493. +    -1,     1,    -1,     3,     4,     5,     6,     7,    -1,    -1,
  19494. +    -1,   778,    12,    -1,   879,    -1,    -1,   784,    -1,   786,
  19495. +   787,   788,    -1,   986,    -1,   988,    -1,    27,    -1,   657,
  19496. +    -1,    31,   995,    -1,    -1,    35,    36,   804,    -1,     3,
  19497. +     4,    41,    -1,     7,    -1,    -1,    -1,    -1,     3,     4,
  19498. +    -1,    51,     7,    53,    -1,    -1,    56,    -1,    -1,    -1,
  19499. +    60,    -1,    -1,   999,  1000,    65,  1002,  1030,    -1,    -1,
  19500. +    -1,    -1,   839,   840,    76,    75,    -1,    41,   845,   846,
  19501. +   847,  1300,    -1,    83,    -1,    -1,    41,    51,    88,    53,
  19502. +    -1,    -1,    -1,    -1,   861,    -1,    51,    99,    53,    -1,
  19503. +    -1,    65,    -1,   103,    -1,    -1,    -1,    -1,     3,     4,
  19504. +    65,    75,   879,   512,    -1,   514,    -1,    -1,  1081,    83,
  19505. +    75,    -1,   521,    -1,    88,    -1,   754,   755,    83,   757,
  19506. +    -1,    -1,    -1,    88,   136,    -1,    -1,     1,    -1,     3,
  19507. +     4,     5,     6,     7,    -1,    -1,    41,    -1,    12,    -1,
  19508. +    -1,    -1,    -1,   552,    -1,   783,    51,    -1,    53,    -1,
  19509. +    -1,    -1,    -1,    27,    -1,    60,  1102,    31,    -1,    -1,
  19510. +    65,    35,    36,   940,   941,    -1,    -1,    41,    -1,    -1,
  19511. +    75,    -1,  1177,  1178,    -1,    -1,    -1,    51,    83,    53,
  19512. +    -1,    -1,  1155,    88,    -1,    -1,    60,    -1,    -1,    -1,
  19513. +  1163,    65,    -1,  1166,    -1,   604,   605,    -1,    -1,    -1,
  19514. +    -1,    75,   611,    -1,    -1,   843,  1179,    -1,    -1,    83,
  19515. +    -1,  1184,  1185,    -1,    88,    -1,    -1,   855,   856,   857,
  19516. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,
  19517. +    -1,  1177,  1178,  1179,    -1,    -1,  1209,    -1,    -1,    -1,
  19518. +    -1,    -1,    -1,  1216,    -1,    -1,    -1,   259,    -1,    -1,
  19519. +  1223,    -1,     4,  1226,     6,     7,    -1,    -1,    -1,    -1,
  19520. +    12,    -1,    -1,    -1,     3,     4,     5,     6,     7,   678,
  19521. +    -1,    -1,    -1,    12,  1247,    27,    -1,  1250,    -1,    31,
  19522. +    -1,    -1,    -1,    35,  1257,    -1,    -1,     1,  1163,     3,
  19523. +     4,     5,     6,     7,    -1,   933,    35,    -1,    12,    51,
  19524. +    -1,    53,    41,    -1,  1179,    44,    -1,    -1,  1281,  1184,
  19525. +  1185,    -1,    51,    27,    53,    -1,    -1,    31,    -1,    -1,
  19526. +    -1,    35,    36,  1296,    -1,    -1,    65,    41,    -1,   341,
  19527. +   342,    -1,    -1,    -1,  1209,    -1,    75,    51,  1311,    53,
  19528. +    -1,    -1,    56,    -1,    83,    -1,    60,    -1,    -1,    88,
  19529. +    -1,    65,    -1,    -1,    -1,  1328,  1329,    -1,  1331,    -1,
  19530. +   769,    75,   771,    -1,    -1,    -1,    -1,    -1,    -1,    83,
  19531. +    -1,    -1,    -1,   782,    88,    -1,   388,    -1,   787,   788,
  19532. +  1018,    -1,    -1,    -1,    -1,    -1,  1163,    -1,    -1,   103,
  19533. +    -1,    -1,    -1,    -1,    -1,     4,    -1,     6,     7,   411,
  19534. +  1177,  1178,  1179,    12,    -1,    -1,    -1,  1184,  1185,    -1,
  19535. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    -1,
  19536. +    -1,    -1,    31,    -1,   436,  1063,    35,    -1,   837,   838,
  19537. +    -1,   840,  1209,    -1,    -1,   844,    -1,   846,   847,     3,
  19538. +     4,    -1,    51,     7,    53,    54,    -1,    -1,   460,    -1,
  19539. +    -1,   463,    -1,    -1,   466,   467,  1331,   469,   470,   471,
  19540. +   472,   473,   474,   475,   476,   477,   478,   479,   480,   481,
  19541. +   482,   483,   484,   485,   486,   487,    -1,    41,    -1,    88,
  19542. +    44,   493,    -1,   495,   496,    -1,    -1,    51,    -1,    53,
  19543.       3,     4,     5,     6,     7,    -1,    -1,    10,    -1,    12,
  19544. -    -1,     3,     4,     5,     6,     7,   585,    -1,    -1,    -1,
  19545. -    12,   601,   602,   592,    27,    -1,    -1,    -1,    31,    12,
  19546. -    -1,   611,    35,    -1,    -1,    27,    -1,   617,    41,    31,
  19547. -    -1,    24,    25,    35,    27,    -1,   615,    -1,    51,    41,
  19548. -    53,    -1,    -1,    -1,    -1,     4,    -1,   626,    -1,    51,
  19549. -    -1,    53,    65,    -1,    56,    -1,    -1,    -1,    -1,    52,
  19550. -    -1,    -1,    75,    65,    -1,    24,    25,    -1,    27,    -1,
  19551. -    83,   661,    -1,    75,    33,    88,    -1,    -1,    -1,    -1,
  19552. -    93,    83,    -1,   662,    -1,    44,    88,    46,    -1,    -1,
  19553. -     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,
  19554. -  1337,    -1,    -1,    -1,    -1,    -1,    -1,    66,   101,    -1,
  19555. -   103,   104,   105,    -1,    -1,   108,   109,   110,   697,    -1,
  19556. +    -1,    65,     4,    -1,     6,     7,    -1,    -1,    -1,   521,
  19557. +    12,    75,    -1,    -1,    27,   527,     4,    -1,    31,    83,
  19558. +    -1,    85,    35,    -1,    88,    89,    -1,    -1,    41,    -1,
  19559. +   542,   543,   941,    35,    -1,    -1,    24,    25,    51,    27,
  19560. +    53,    -1,    44,    -1,    -1,    33,    -1,    -1,    -1,    51,
  19561. +    -1,    53,    65,    -1,  1331,    -1,    44,    -1,    46,    -1,
  19562. +    -1,    -1,    75,    65,    -1,    -1,    -1,    -1,    -1,   581,
  19563. +    83,    -1,    -1,    75,    -1,    88,   588,    -1,    66,    -1,
  19564. +    93,    -1,    -1,    85,    -1,    -1,    88,    89,    -1,    -1,
  19565. +   999,  1000,     1,  1002,     3,     4,     5,     6,     7,   611,
  19566. +    -1,    -1,    -1,    12,    -1,    -1,    -1,    95,    -1,    -1,
  19567. +   622,    -1,    -1,   101,    -1,   103,    -1,   105,    27,    -1,
  19568. +   108,   109,    31,    -1,    -1,    -1,    35,    -1,    -1,    -1,
  19569. +    -1,   119,    41,   121,   122,    -1,    45,    -1,    -1,    -1,
  19570. +    -1,    -1,    51,    -1,    53,    -1,   658,    56,    -1,    -1,
  19571. +    -1,   139,   140,   141,    -1,    -1,    65,    -1,    -1,    -1,
  19572. +    -1,   149,    -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,
  19573. +    -1,    -1,    -1,    -1,    83,    -1,    -1,   165,    -1,    88,
  19574. +    -1,   693,    -1,    -1,    -1,    94,     1,    -1,     3,     4,
  19575. +    -1,     6,     7,     8,     9,   183,    11,    12,    -1,    -1,
  19576. +    -1,    -1,   714,    -1,    -1,   193,    -1,    -1,    -1,    -1,
  19577. +    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
  19578. +    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
  19579. +    -1,    46,    47,    48,    49,    50,    51,    -1,    53,   751,
  19580. +   752,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    -1,
  19581. +    65,    -1,    -1,   765,    -1,   767,    -1,    -1,    73,    74,
  19582. +    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
  19583. +    -1,    -1,    -1,    88,    -1,    -1,    -1,    92,    -1,    -1,
  19584. +    -1,    -1,    -1,    -1,   796,    -1,    -1,   275,    -1,   104,
  19585. +    -1,    -1,    -1,    -1,    -1,   283,   808,   285,    -1,     3,
  19586. +     4,    -1,     6,     7,     8,     9,    -1,    11,    12,   821,
  19587. +    -1,   823,    -1,   825,    -1,    -1,    -1,    -1,    -1,    -1,
  19588. +    -1,    -1,    -1,    27,    28,   313,    -1,    31,   316,    33,
  19589. +    -1,    35,   320,    37,    38,    -1,    40,    41,    42,    43,
  19590. +   852,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
  19591. +    -1,    -1,    -1,    -1,   866,   867,    -1,    -1,    62,    -1,
  19592. +    -1,    65,    -1,    -1,    -1,    -1,    -1,     3,     4,    73,
  19593. +    74,    75,   360,   361,   362,   363,    -1,    81,    82,    83,
  19594. +   368,    -1,    -1,    -1,    88,    -1,   374,    -1,   376,    -1,
  19595. +   378,   379,   904,   905,    -1,    -1,   908,   385,    -1,    -1,
  19596. +   104,    -1,    -1,   391,    -1,    41,   394,    -1,     1,    -1,
  19597. +     3,     4,     5,     6,     7,    51,    -1,    53,    -1,    12,
  19598. +    -1,     3,     4,    -1,    60,   413,   414,    -1,   416,    65,
  19599. +    -1,    -1,    -1,    -1,    27,    -1,    -1,    -1,    31,    75,
  19600. +    -1,    -1,    35,    36,    -1,    -1,    -1,    83,    41,   961,
  19601. +    -1,    -1,    88,    -1,    -1,    -1,    -1,     4,    51,    41,
  19602. +    53,   973,    -1,    -1,     3,     4,    -1,    60,     7,    51,
  19603. +    -1,    53,    65,    -1,    -1,    -1,    -1,    24,    25,    -1,
  19604. +    27,    -1,    75,    65,    -1,    -1,    33,    -1,    -1,    -1,
  19605. +    83,    -1,    -1,    75,    -1,    88,    -1,    44,    -1,    46,
  19606. +    -1,    83,    41,    -1,    -1,    44,    88,    -1,    -1,  1021,
  19607. +   103,    -1,    51,    -1,    53,     3,     4,     5,     6,     7,
  19608. +    -1,   509,    10,  1035,    12,    -1,    65,    -1,  1040,    -1,
  19609. +  1042,    -1,    -1,   521,    -1,    -1,    75,    -1,    -1,    27,
  19610. +    -1,    -1,    -1,    31,    83,    -1,    85,    35,    95,    88,
  19611. +    89,    -1,    -1,    41,   101,    -1,    44,    -1,   105,    -1,
  19612. +    -1,   108,   109,    51,   552,    53,    -1,    -1,    -1,    -1,
  19613. +    -1,    -1,   119,    -1,   121,   122,    -1,    65,    -1,    -1,
  19614. +    -1,     4,    -1,     6,     7,    -1,    -1,    75,    -1,    12,
  19615. +  1102,    -1,   139,   140,   141,    83,    -1,    85,    -1,    -1,
  19616. +    88,    89,  1114,  1115,    27,    93,    -1,    -1,    31,    -1,
  19617. +  1122,  1123,    35,    -1,    -1,   603,   604,   605,   165,    -1,
  19618. +    -1,    -1,    -1,   611,    -1,    -1,    -1,    -1,    51,    -1,
  19619. +    53,  1143,    -1,    -1,    -1,    -1,   183,    -1,    -1,   627,
  19620. +   628,    -1,   630,    -1,    -1,    -1,   193,    -1,    -1,    -1,
  19621. +    -1,    -1,  1164,    68,    69,    70,    71,    72,    73,    74,
  19622. +    75,    76,    77,    78,    79,    88,    -1,     1,    -1,     3,
  19623. +     4,   659,     6,     7,     8,     9,  1188,    11,    12,    -1,
  19624. +    -1,    -1,    -1,  1195,  1196,    -1,    -1,  1199,    -1,    -1,
  19625. +    -1,    -1,  1204,    27,    28,    29,    30,    31,    -1,    33,
  19626. +    -1,    35,    -1,    37,    38,   693,    40,    41,    42,    43,
  19627. +    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
  19628. +    54,    -1,    -1,    -1,     3,     4,    -1,    -1,    62,    -1,
  19629. +    -1,    65,    -1,    -1,    -1,    -1,    -1,   284,   285,    73,
  19630. +    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
  19631. +    -1,  1263,  1264,  1265,    88,    89,    -1,    -1,    92,    -1,
  19632. +    -1,    -1,    41,    -1,    -1,    -1,   313,    -1,    -1,   316,
  19633. +   104,    -1,    51,   320,    53,    -1,    -1,    -1,    -1,    -1,
  19634. +    27,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
  19635. +    -1,    -1,   339,    -1,    -1,    -1,    75,    44,   786,   787,
  19636. +    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,    88,
  19637. +    -1,    -1,    -1,   360,   361,   362,   363,    -1,  1330,    -1,
  19638. +    -1,   368,    -1,    -1,    -1,    -1,    -1,   374,    -1,   376,
  19639. +    -1,   378,   379,    -1,    -1,    -1,    -1,    -1,   385,    -1,
  19640. +    -1,    -1,    -1,    -1,   391,    -1,    -1,   394,    95,   837,
  19641. +   838,   839,   840,    -1,   842,    -1,   844,   845,   846,   847,
  19642. +    -1,   108,   109,    -1,    -1,    -1,   413,   414,    -1,   416,
  19643. +    -1,    -1,    -1,    -1,   121,    -1,    -1,    -1,    -1,    -1,
  19644. +    -1,    -1,    -1,    -1,   872,    -1,    -1,   875,    -1,   877,
  19645. +    -1,    -1,   139,   140,   141,    -1,    -1,    -1,    -1,    -1,
  19646. +    -1,    -1,   890,   891,    -1,     1,    -1,     3,     4,     5,
  19647. +     6,     7,     8,     9,    -1,    11,    12,    13,   165,    15,
  19648. +    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
  19649. +    26,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
  19650. +    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,
  19651. +    46,    47,    48,    49,    50,    51,   944,    53,    54,    -1,
  19652. +    56,    -1,    -1,    -1,    -1,   953,    62,    -1,    -1,    65,
  19653. +    -1,    -1,    -1,    -1,   521,    -1,    -1,    73,    74,    75,
  19654. +    -1,    -1,    -1,    -1,   231,    81,    82,    83,    -1,    -1,
  19655. +    -1,    -1,    88,    -1,    90,    -1,    92,   985,   986,   987,
  19656. +    -1,    -1,    -1,    -1,    -1,   552,    -1,   103,   104,    -1,
  19657. +    -1,   999,  1000,    -1,  1002,     3,     4,    -1,    -1,     7,
  19658. +    -1,     4,     5,     6,     7,    -1,    -1,    10,    -1,    12,
  19659. +   277,   278,   279,    -1,    -1,    -1,    -1,    -1,   285,    -1,
  19660. +    -1,    -1,  1030,    -1,    27,    -1,    -1,    -1,    31,    -1,
  19661. +    -1,    -1,    35,    41,    -1,    -1,   603,   604,   605,    -1,
  19662. +    -1,    44,    -1,    51,   611,    53,    -1,    -1,    51,    -1,
  19663. +    53,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
  19664. +   627,   628,    65,   630,    -1,    -1,    -1,    75,    -1,    -1,
  19665. +    -1,    -1,    75,    -1,    -1,    83,    -1,    -1,    -1,    -1,
  19666. +    88,    -1,    85,    -1,    -1,    88,    89,    -1,    -1,    -1,
  19667. +    93,    -1,   659,   360,  1102,   362,   363,   364,    -1,     1,
  19668. +    -1,     3,     4,     5,     6,     7,    -1,   374,    -1,   376,
  19669. +    12,   378,   379,    -1,    -1,    -1,     3,     4,   385,    -1,
  19670. +     7,   277,   278,   279,   391,    27,   693,   394,    -1,    31,
  19671. +    -1,    -1,    -1,    35,    -1,    -1,    -1,    -1,    44,    41,
  19672. +    -1,    -1,    -1,    -1,    -1,    -1,   413,    -1,    -1,    51,
  19673. +    -1,    53,    -1,    -1,    41,    -1,    -1,    44,    -1,    -1,
  19674. +    66,    -1,    -1,    65,    51,    -1,    53,    -1,    -1,  1177,
  19675. +  1178,  1179,    -1,    75,    -1,    -1,     3,     4,    65,    85,
  19676. +     7,    83,    -1,    -1,    -1,    -1,    88,    -1,    75,    95,
  19677. +    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,    -1,
  19678. +    -1,    88,    89,    -1,   360,    -1,   362,   363,   364,    -1,
  19679. +    -1,    -1,    -1,  1221,    41,   121,    -1,    -1,    -1,   786,
  19680. +   787,    -1,    -1,    -1,    51,    -1,    53,   794,    -1,    -1,
  19681. +    -1,    -1,   499,   139,   140,   141,    -1,    -1,    65,    -1,
  19682. +    -1,    -1,    -1,   149,   511,   512,    -1,   514,    75,    -1,
  19683. +    -1,    -1,   819,    -1,   521,    -1,    83,    -1,    -1,   165,
  19684. +    -1,    88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19685. +   837,   838,   839,   840,    -1,    -1,    -1,   844,   845,   846,
  19686. +   847,    -1,    -1,    -1,    -1,   552,    -1,    -1,    -1,   195,
  19687. +    -1,    -1,     4,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19688. +    -1,    -1,    -1,    -1,    -1,   872,    -1,    -1,   875,    -1,
  19689. +   877,    -1,    24,    25,    -1,    -1,    -1,     4,    -1,     6,
  19690. +     7,    33,    -1,   890,   891,    12,    -1,    -1,    -1,    -1,
  19691. +    -1,    -1,    -1,    -1,    46,    -1,   603,   604,   605,    -1,
  19692. +    -1,    -1,    -1,    -1,   611,    -1,    -1,    -1,    35,    -1,
  19693. +    -1,    -1,    -1,    -1,    -1,   511,   512,    44,   514,    -1,
  19694. +   627,   628,    -1,   630,    51,   521,    53,    -1,     4,     5,
  19695. +     6,     7,    -1,    -1,    -1,    -1,    12,   283,    65,   285,
  19696. +    -1,    -1,    -1,    -1,    -1,    -1,   953,    -1,    75,   101,
  19697. +    -1,    27,   659,   105,    -1,    31,   552,    -1,    85,    35,
  19698. +    -1,    88,    89,    -1,    -1,    -1,    -1,   119,    -1,    -1,
  19699. +   122,   678,     3,     4,    -1,    51,     7,    53,   985,   986,
  19700. +   987,   688,   689,   690,    -1,    -1,    -1,   139,   140,    -1,
  19701. +    -1,    -1,   999,  1000,    -1,  1002,    -1,    -1,    -1,    -1,
  19702. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,   603,   604,   605,
  19703. +    41,    -1,    -1,    -1,   360,   611,   362,   363,    -1,    -1,
  19704. +    51,    -1,    53,  1030,    -1,    -1,    -1,    -1,   374,    -1,
  19705. +   376,   183,   378,   379,    65,    -1,     3,     4,    -1,   385,
  19706. +     7,   193,    -1,    -1,    75,   391,    -1,    -1,   394,    -1,
  19707. +    -1,    -1,    83,    -1,    -1,    -1,    12,    88,    -1,    -1,
  19708. +    -1,    -1,   769,    -1,   771,    -1,    -1,   413,    24,    25,
  19709. +    -1,    27,    -1,    -1,    41,   782,    -1,    -1,    -1,   786,
  19710. +   787,   788,   678,    -1,    51,    -1,    53,    -1,    -1,    -1,
  19711. +    -1,    -1,    -1,    -1,    -1,  1102,    52,    -1,    65,    -1,
  19712. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    -1,
  19713. +    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,
  19714. +    -1,    88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19715. +   837,   838,   839,   840,    -1,    -1,    -1,   844,   845,   846,
  19716. +   847,    -1,    -1,    -1,    -1,   101,    -1,   103,   104,   105,
  19717. +    -1,    -1,   108,   109,    -1,     3,     4,    -1,    -1,     7,
  19718. +    -1,   313,    -1,    -1,   316,   872,    -1,    -1,   320,    -1,
  19719. +  1177,  1178,  1179,   769,    -1,   771,    -1,    -1,   524,    -1,
  19720. +    -1,    -1,    -1,    -1,    -1,    -1,   782,    -1,    -1,    -1,
  19721. +   786,   787,   788,    41,    -1,    -1,    -1,    -1,    -1,    -1,
  19722. +    -1,    -1,    -1,    51,    -1,    53,   552,    -1,    -1,   361,
  19723. +    -1,    -1,   919,   920,  1221,   922,   368,    65,    -1,    -1,
  19724. +    -1,    -1,   374,    -1,   376,    -1,    -1,    75,    -1,    -1,
  19725. +    -1,    -1,    -1,   940,   941,    83,    -1,   193,    -1,   391,
  19726. +    88,   837,   838,   839,   840,    -1,    -1,    -1,   844,   845,
  19727. +   846,   847,    -1,    -1,    -1,    -1,    -1,   603,   604,   605,
  19728. +    -1,   413,   414,    -1,   416,   611,    -1,    -1,    -1,    -1,
  19729. +     3,     4,     5,     6,     7,   231,    -1,    -1,   985,    12,
  19730. +   987,   627,   628,    -1,   630,    -1,    -1,    -1,    -1,    -1,
  19731. +    -1,    -1,   999,  1000,    27,  1002,    -1,    -1,    31,    -1,
  19732.      -1,    -1,    35,    -1,    -1,    -1,    -1,    -1,    41,    -1,
  19733. -    -1,    44,    -1,    -1,    -1,    -1,    95,    -1,    51,   718,
  19734. -    53,    -1,   101,    -1,   103,    -1,   105,    -1,    -1,   108,
  19735. -   109,   110,    65,    -1,    -1,    -1,    -1,    -1,  1169,    -1,
  19736. -    -1,   120,    75,   122,   123,    -1,    -1,    -1,   758,   759,
  19737. -    83,   761,  1183,  1184,  1185,    88,   755,   756,    -1,  1190,
  19738. -  1191,   140,   141,   142,    -1,    -1,    -1,    -1,    -1,    -1,
  19739. -   769,   150,   771,    -1,    -1,    -1,    -1,   787,    -1,    -1,
  19740. -    -1,   194,    -1,    -1,  1215,    -1,    -1,   166,    -1,    -1,
  19741. -    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,
  19742. -    -1,   800,    -1,    -1,    12,   184,    -1,    -1,    -1,    -1,
  19743. -    -1,    -1,    -1,   812,    -1,   194,    -1,    -1,    -1,   232,
  19744. -    -1,    -1,    -1,    -1,    -1,    -1,   825,    35,   827,    -1,
  19745. -   829,    -1,    -1,    41,    -1,    -1,    44,    -1,   848,     4,
  19746. -    -1,     6,     7,    51,    -1,    53,    -1,    12,    -1,    -1,
  19747. -   860,   861,   862,    -1,    -1,    -1,    -1,    65,   857,    -1,
  19748. -    -1,    -1,    -1,   276,    -1,   278,   279,    75,    -1,    -1,
  19749. -    35,    -1,   871,   872,    -1,    83,    -1,    85,    -1,    44,
  19750. -    88,    89,    -1,    -1,    -1,    -1,    51,     1,    53,     3,
  19751. -     4,     5,     6,     7,    -1,   308,    -1,   276,    12,    -1,
  19752. -    65,   314,    -1,    -1,   317,   284,  1337,   286,    -1,   322,
  19753. -    75,   910,   911,    27,    -1,   914,    -1,    31,    -1,    -1,
  19754. -    85,    35,    -1,    88,    89,    -1,    -1,    41,    -1,   939,
  19755. -    -1,    -1,    -1,    -1,    -1,   314,    -1,    51,   317,    53,
  19756. -    -1,    -1,    -1,   322,     3,     4,     5,     6,     7,    -1,
  19757. -    -1,    65,    -1,    12,    -1,    -1,    -1,    -1,    -1,    -1,
  19758. -    -1,    75,    -1,    -1,    -1,    -1,    -1,   966,    27,    83,
  19759. -    -1,    -1,    31,    -1,    88,    -1,    35,    -1,    -1,   978,
  19760. -    -1,    -1,    41,   362,   363,   364,   365,    -1,    -1,    -1,
  19761. -    -1,   370,    51,    -1,    53,    -1,    -1,   376,    -1,   378,
  19762. -    -1,   380,   381,   382,    -1,    -1,    65,     3,     4,   388,
  19763. -    -1,     7,    -1,  1023,    -1,   394,    75,    -1,   397,    -1,
  19764. -    -1,    -1,    -1,   436,    83,    -1,    -1,  1026,    -1,    88,
  19765. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,   416,   417,    -1,
  19766. -   419,  1040,    -1,     4,    -1,    41,  1045,    -1,  1047,    -1,
  19767. -    -1,     4,     5,     6,     7,    51,    -1,    53,  1068,    12,
  19768. -    -1,    -1,    -1,    24,    25,    -1,    27,    -1,    -1,    65,
  19769. -    -1,    -1,    33,    -1,    27,    -1,    -1,    -1,    31,    75,
  19770. -    -1,    -1,    35,    44,    -1,    46,    -1,    83,    -1,   502,
  19771. -    -1,    -1,    88,    -1,    -1,    -1,    -1,    -1,    51,   512,
  19772. -    53,   514,   515,     3,     4,     5,     6,     7,    -1,  1108,
  19773. -    10,    -1,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19774. -    -1,  1120,  1121,    -1,    -1,    -1,    -1,    27,    -1,  1128,
  19775. -  1129,    31,    -1,   512,    95,    35,    -1,    -1,    -1,    -1,
  19776. -   101,    41,    -1,   556,   105,   524,    -1,   108,   109,   110,
  19777. -  1149,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,   120,
  19778. -    -1,   122,   123,    -1,    -1,    65,     4,     5,     6,     7,
  19779. -    -1,  1170,    10,    -1,    12,    75,   555,    -1,    -1,   140,
  19780. -   141,   142,    -1,    83,    -1,    -1,    -1,    -1,    88,    27,
  19781. -    -1,    -1,    27,    31,    -1,  1194,    -1,    35,    -1,    -1,
  19782. -    -1,    -1,  1201,  1202,    -1,   166,  1205,    -1,    -1,    44,
  19783. -    -1,  1210,    -1,    51,    -1,    53,     3,     4,     5,     6,
  19784. -     7,    -1,    -1,   184,    -1,    12,    -1,    -1,   607,   608,
  19785. -   609,    -1,    -1,   194,    -1,    -1,   615,    -1,    -1,    -1,
  19786. -    27,    -1,    -1,    -1,    31,    -1,    -1,    -1,    35,    -1,
  19787. -    -1,    -1,   631,   632,    41,   634,    -1,    44,    -1,    -1,
  19788. -    95,    -1,    -1,    -1,    51,    -1,    53,    -1,    -1,   682,
  19789. -  1269,  1270,  1271,   108,   109,   110,    -1,    -1,    65,   692,
  19790. -   693,   694,    -1,    -1,   663,    -1,    -1,   122,    75,    -1,
  19791. +    -1,    44,    -1,   659,    -1,    -1,    -1,    -1,    51,   275,
  19792. +    53,   277,   278,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19793. +    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19794. +    -1,    -1,    75,    -1,   940,   941,    -1,    -1,    -1,    -1,
  19795. +    83,   307,    85,    -1,    -1,    88,    89,   313,    -1,    -1,
  19796. +   316,    -1,    -1,    -1,   320,    63,    64,    65,    66,    67,
  19797. +    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
  19798. +    78,    79,     1,    -1,     3,     4,     5,     6,     7,     8,
  19799. +     9,    10,    11,    12,    -1,  1102,    -1,    -1,    -1,    -1,
  19800. +    -1,    -1,    -1,   999,  1000,    -1,  1002,    -1,    27,    28,
  19801. +    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,
  19802. +    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,    48,
  19803. +    49,    50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,
  19804. +    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,
  19805. +    -1,   603,   604,    -1,    73,    74,    75,    -1,    -1,    -1,
  19806. +    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,    88,
  19807. +  1177,  1178,  1179,    92,    93,   627,   628,   433,   630,    -1,
  19808. +    -1,    -1,    -1,   102,    -1,   104,    -1,    -1,    -1,    -1,
  19809. +    -1,   837,   838,   839,   840,    -1,   842,    -1,   844,   845,
  19810. +   846,   847,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19811. +    -1,    -1,    -1,    -1,  1221,    -1,    -1,    -1,    -1,    -1,
  19812. +    -1,    -1,    -1,    -1,    -1,    -1,   872,    -1,    -1,    -1,
  19813. +    -1,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
  19814. +    10,    11,    12,   499,    -1,    -1,    -1,    -1,    -1,    -1,
  19815. +    -1,    -1,    -1,   509,    -1,   511,   512,    27,    28,    29,
  19816. +    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
  19817. +    40,    41,    42,    43,    44,    -1,    46,    47,    48,    49,
  19818. +    50,    51,    -1,    53,    54,    -1,    -1,    -1,    -1,    -1,
  19819. +    -1,    -1,    62,    -1,    -1,    65,    -1,   553,   944,    -1,
  19820. +    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
  19821. +    -1,    81,    82,    83,    -1,    85,    -1,    -1,    88,    89,
  19822. +    -1,    -1,    92,    93,    -1,    -1,     3,     4,     5,     6,
  19823. +     7,    -1,    -1,    -1,   104,    12,    -1,    -1,    -1,   985,
  19824. +    -1,   987,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19825. +    -1,    -1,    -1,   999,  1000,    -1,  1002,    -1,    35,    -1,
  19826. +    -1,    -1,    -1,    -1,    41,    -1,    -1,    44,    -1,    -1,
  19827. +    -1,    -1,    -1,    -1,    51,    -1,    53,    -1,    -1,    -1,
  19828. +    -1,    -1,    -1,    -1,    -1,   837,   838,    -1,    65,    -1,
  19829. +    -1,    -1,   844,    -1,    -1,    -1,    -1,    -1,    75,    -1,
  19830.      -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,    -1,
  19831. -    -1,    88,    89,    -1,    -1,   140,   141,   142,    -1,    -1,
  19832. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   697,    -1,
  19833. -     3,     4,    -1,    -1,   285,   286,    -1,    -1,    -1,    -1,
  19834. -    -1,   166,    -1,    -1,    -1,    -1,    -1,  1336,    -1,    -1,
  19835. -    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
  19836. -     7,    -1,    -1,   314,    -1,    12,   317,    -1,    41,    -1,
  19837. -   773,   322,   775,    -1,    -1,    -1,    -1,    -1,    51,    -1,
  19838. -    53,    -1,    -1,   786,    -1,    -1,    -1,    60,    35,    -1,
  19839. -   341,    -1,    65,    -1,    41,    -1,    -1,    44,    -1,    -1,
  19840. -    -1,    -1,    75,    -1,    51,    -1,    53,   232,    -1,    -1,
  19841. -    83,   362,   363,   364,   365,    88,    -1,    -1,    65,   370,
  19842. -    -1,   790,   791,   792,    -1,   376,    -1,   378,    75,   380,
  19843. -   381,   382,    -1,    -1,    -1,    -1,    83,   388,    85,    -1,
  19844. -    -1,    88,    89,   394,    -1,    -1,   397,    -1,    -1,    -1,
  19845. -    -1,    -1,    -1,   278,   279,   280,    -1,    -1,    -1,    -1,
  19846. -    -1,   286,    -1,    -1,    -1,   416,   417,    -1,   419,    -1,
  19847. -    -1,    -1,   841,   842,   843,   844,   845,   880,   847,    -1,
  19848. -   849,   850,   851,   852,    -1,    -1,     3,     4,     5,     6,
  19849. -     7,    -1,    -1,    -1,    -1,    12,    68,    69,    70,    71,
  19850. -    72,    73,    74,    75,    76,    77,    78,    79,   877,    -1,
  19851. -    27,   880,    -1,   882,    31,    -1,    -1,    -1,    35,    -1,
  19852. -    -1,    -1,   925,   926,    41,   928,   895,   896,   897,    -1,
  19853. -    -1,    -1,    -1,    -1,    51,    -1,    53,   362,    -1,   364,
  19854. -   365,   366,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,
  19855. -    -1,   376,    -1,   378,    -1,   380,   381,   382,    75,     4,
  19856. -     5,     6,     7,   388,    -1,    10,    83,    12,    -1,   394,
  19857. -    -1,    88,   397,   524,    -1,    -1,    -1,    -1,    -1,    -1,
  19858. -   949,    -1,    27,    -1,    -1,    -1,    31,    -1,    -1,   958,
  19859. -    35,   416,    -1,    -1,   140,   141,   142,    -1,    -1,    44,
  19860. -    -1,    -1,    -1,    -1,   555,    -1,    51,    -1,    53,    -1,
  19861. -    -1,    -1,    -1,     3,     4,    -1,    -1,     7,    -1,    -1,
  19862. -    65,   990,   991,   992,     3,     4,    -1,    -1,     7,    -1,
  19863. -    75,    -1,    -1,    -1,    -1,  1004,  1005,    44,  1007,    -1,
  19864. -    85,    -1,    -1,    88,    89,    -1,    -1,    -1,    93,    -1,
  19865. -    -1,    41,    -1,    -1,    -1,    -1,   607,   608,   609,    66,
  19866. -    -1,    51,    41,    53,   615,    -1,  1035,    -1,    -1,    -1,
  19867. -    -1,    -1,    51,    -1,    53,    65,    -1,   502,    85,    -1,
  19868. -   631,   632,    -1,   634,    -1,    75,    65,    -1,    95,   514,
  19869. -   515,    -1,   517,    83,    -1,    -1,    75,    -1,    88,   524,
  19870. -    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,    88,
  19871. -    -1,    -1,   663,    -1,    -1,   122,    -1,    -1,    -1,    -1,
  19872. -    -1,    -1,    -1,     3,     4,    -1,     6,     7,     8,     9,
  19873. -   555,    11,    12,   140,   141,   142,    -1,    -1,    -1,  1108,
  19874. -    -1,    -1,    -1,   150,    -1,    -1,   697,    27,    28,    29,
  19875. -    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,   166,
  19876. -    40,    41,    42,    43,    -1,    -1,    46,    47,    48,    49,
  19877. -    50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,
  19878. -    -1,    -1,   607,   608,   609,    -1,    -1,    -1,    -1,   196,
  19879. -   615,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19880. -    -1,    81,    82,    83,     3,     4,   631,   632,    88,   634,
  19881. -    -1,    -1,    92,    -1,  1183,  1184,  1185,    -1,    -1,    -1,
  19882. -    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,
  19883. -   376,    -1,   378,    -1,   380,   381,   382,    -1,   663,   790,
  19884. -   791,   792,    41,    -1,    -1,    -1,    -1,   798,   394,    -1,
  19885. -    -1,    -1,    51,    -1,    53,    -1,    -1,   682,  1227,    -1,
  19886. -    -1,    -1,    -1,    -1,    -1,    -1,    65,   692,   693,   694,
  19887. -   416,    -1,   823,    -1,    -1,    -1,    75,   284,    -1,   286,
  19888. -    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,    88,
  19889. -   841,   842,   843,   844,   845,    -1,    -1,    -1,   849,   850,
  19890. -   851,   852,    -1,    -1,    -1,    -1,    -1,     4,    -1,     6,
  19891. -     7,    -1,    -1,    -1,    -1,    12,    -1,    -1,    -1,    -1,
  19892. -    -1,    -1,    -1,    -1,    -1,    -1,   877,    -1,    -1,   880,
  19893. -    27,   882,    -1,    -1,    31,    -1,    -1,    -1,    35,    -1,
  19894. -    -1,    -1,    -1,    -1,   895,   896,   897,    44,   773,    -1,
  19895. -   775,    -1,    -1,    -1,    51,   362,    53,   364,   365,    -1,
  19896. -    -1,   786,    -1,    -1,    -1,   790,   791,   792,    65,   376,
  19897. -    -1,   378,    -1,   380,   381,   382,    -1,    -1,    75,    -1,
  19898. -    -1,   388,    -1,    -1,   278,   279,   280,   394,    85,    -1,
  19899. -   397,    88,    89,    66,    67,    68,    69,    70,    71,    72,
  19900. -    73,    74,    75,    76,    77,    78,    79,   958,    -1,   416,
  19901. -    -1,    -1,    -1,    -1,    -1,     4,   841,   842,   843,   844,
  19902. -   845,    -1,    -1,    -1,   849,   850,   851,   852,    -1,    -1,
  19903. -    -1,    -1,    -1,    -1,    -1,    24,    25,    -1,    -1,   990,
  19904. -   991,   992,     3,     4,    33,    -1,     7,    -1,    -1,    -1,
  19905. -    -1,    -1,   877,  1004,  1005,    -1,  1007,    46,    -1,    -1,
  19906. -    -1,   607,   608,   609,    -1,    -1,    -1,    -1,   362,   615,
  19907. -   364,   365,   366,     3,     4,    -1,    -1,     7,    -1,    -1,
  19908. -    41,    -1,    -1,    -1,  1035,   631,   632,    -1,   634,    -1,
  19909. -    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19910. -   925,   926,    -1,   928,    65,    -1,    -1,    -1,    -1,    -1,
  19911. -    -1,    41,   101,    -1,    75,    -1,   105,   663,    -1,    -1,
  19912. -   527,    51,    83,    53,    -1,    -1,    -1,    88,    -1,    -1,
  19913. -    -1,   120,    -1,    -1,   123,    65,    -1,    -1,    -1,    -1,
  19914. -    -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,   555,    -1,
  19915. -    -1,   140,   141,    83,    -1,    -1,    -1,  1108,    88,    -1,
  19916. -    -1,    -1,    -1,    -1,    -1,   990,    -1,   992,    -1,     3,
  19917. -     4,   278,   279,   280,    -1,    -1,    -1,    -1,    -1,  1004,
  19918. -  1005,    -1,  1007,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19919. -     3,     4,     5,     6,     7,   184,    -1,    -1,    -1,    12,
  19920. -   607,   608,   609,    -1,    -1,   194,    -1,    41,   615,    -1,
  19921. -    -1,    -1,    -1,    -1,    27,    -1,    -1,    51,    31,    53,
  19922. -   514,   515,    35,   517,   631,   632,    -1,   634,    41,    -1,
  19923. -   524,    65,  1183,  1184,  1185,    -1,    -1,    -1,    51,    -1,
  19924. -    53,    75,    -1,    56,    -1,    -1,    -1,    -1,    -1,    83,
  19925. -    -1,    -1,    65,    -1,    88,   362,   663,   364,   365,   366,
  19926. -    -1,   555,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19927. -    83,    -1,    -1,    -1,    -1,    88,  1227,    -1,    -1,    -1,
  19928. -    -1,    -1,    -1,  1108,    -1,    -1,    -1,    10,    -1,    -1,
  19929. -    -1,    -1,    -1,    -1,    -1,   841,   842,   843,   844,   845,
  19930. -    -1,    -1,    -1,   849,   850,   851,   852,    -1,    -1,    -1,
  19931. -    -1,    -1,    -1,   607,   608,   609,    -1,    -1,    -1,    -1,
  19932. -    -1,   615,    -1,    -1,    -1,   314,    -1,    -1,   317,    -1,
  19933. -    -1,   877,    -1,   322,    57,    58,    59,    60,    61,    62,
  19934. -    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
  19935. -    73,    74,    75,    76,    77,    78,    79,    -1,  1183,  1184,
  19936. -  1185,    67,    68,    69,    70,    71,    72,    73,    74,    75,
  19937. -    76,    77,    78,    79,   363,    -1,    -1,    -1,    -1,    -1,
  19938. -    -1,   370,    -1,    -1,    -1,    -1,    -1,   376,   682,   378,
  19939. +    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19940. +   872,    -1,   678,   875,    -1,   877,    -1,    -1,    -1,    -1,
  19941. +    -1,    -1,   688,   689,   690,    -1,     1,    -1,     3,     4,
  19942. +     5,     6,     7,     8,     9,    10,    11,    12,    -1,    -1,
  19943. +    -1,    -1,    -1,    -1,    -1,    -1,  1102,    -1,    -1,    -1,
  19944. +    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
  19945. +    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    44,
  19946. +    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
  19947. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
  19948. +    65,   953,    -1,    -1,    10,    -1,    -1,    -1,    73,    74,
  19949. +    75,    -1,    -1,   769,    -1,   771,    81,    82,    83,    -1,
  19950. +    85,    -1,    -1,    88,    89,    -1,   782,    92,    93,    -1,
  19951. +    -1,  1177,  1178,  1179,   986,    -1,    -1,    -1,    -1,   104,
  19952. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,   999,  1000,    -1,
  19953. +  1002,    57,    58,    59,    60,    61,    62,    63,    64,    65,
  19954. +    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
  19955. +    76,    77,    78,    79,    -1,  1221,    -1,    -1,  1030,    -1,
  19956. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,
  19957. +     3,     4,     5,     6,     7,     8,     9,    -1,    11,    12,
  19958. +    13,    -1,    15,    16,    17,    18,    19,    20,    21,    22,
  19959. +    23,    24,    25,    26,    27,    28,    29,    30,    31,   875,
  19960. +    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
  19961. +    43,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
  19962. +    53,    54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,
  19963. +    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19964. +    73,    74,    75,   919,   920,    -1,   922,    -1,    81,    82,
  19965. +    83,    -1,    -1,    -1,    -1,    88,    -1,    90,    -1,    92,
  19966.      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19967. -    -1,    -1,  1227,    -1,    -1,   394,    -1,   514,   515,    62,
  19968. -    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
  19969. -    73,    74,    75,    76,    77,    78,    79,   416,   417,    -1,
  19970. -   419,    -1,    -1,    -1,   841,   842,   843,   844,   845,    -1,
  19971. -   847,    -1,   849,   850,   851,   852,    -1,    -1,   555,    -1,
  19972. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1004,  1005,
  19973. -    -1,  1007,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19974. -   877,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   773,
  19975. -    -1,   775,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19976. -    -1,    -1,   786,    -1,    -1,    -1,   790,   791,   792,    -1,
  19977. -   607,   608,    -1,    -1,    57,    58,    59,    -1,    61,    62,
  19978. -    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
  19979. -    73,    74,    75,    76,    77,    78,    79,    65,    66,    67,
  19980. -    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
  19981. -    78,    79,   949,    -1,    -1,    -1,    -1,   841,   842,   843,
  19982. -   844,   845,   105,    -1,    -1,   849,   850,   851,   852,    -1,
  19983. -    -1,    -1,  1108,    -1,     3,     4,     5,     6,     7,    -1,
  19984. -    -1,    10,    -1,    12,    -1,   682,    -1,    -1,    -1,    -1,
  19985. -    -1,    -1,    -1,   990,    -1,   992,    -1,    -1,    27,    -1,
  19986. -    -1,    -1,    31,    -1,    -1,    -1,    35,  1004,  1005,    -1,
  19987. -  1007,    -1,    41,    -1,    -1,    44,    -1,    -1,    -1,    -1,
  19988. -    -1,    -1,    51,    -1,    53,    -1,    -1,    -1,   607,   608,
  19989. -    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
  19990. -    -1,    -1,    -1,    -1,    -1,    -1,    75,  1183,  1184,  1185,
  19991. -    -1,    -1,   631,   632,    83,   634,    85,    -1,    -1,    88,
  19992. -    89,    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,
  19993. -    -1,    -1,    -1,    -1,    -1,    -1,   773,    -1,   775,    -1,
  19994. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   786,
  19995. -    -1,    -1,    -1,   790,   791,    64,    65,    66,    67,    68,
  19996. -    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
  19997. -    79,  1108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  19998. -  1004,  1005,    -1,  1007,    -1,    -1,    -1,    -1,    -1,    -1,
  19999. -    32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20000. -    -1,    -1,    -1,    -1,   841,   842,   843,   844,    -1,    -1,
  20001. -    -1,    -1,   849,   850,   851,    57,    58,    59,    -1,    61,
  20002. -    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
  20003. -    72,    73,    74,    75,    76,    77,    78,    79,    -1,    -1,
  20004. -    -1,    -1,    -1,    -1,    -1,    -1,  1183,  1184,  1185,    -1,
  20005. -    -1,    -1,     1,    -1,     3,     4,     5,     6,     7,     8,
  20006. +   103,   104,     1,    -1,     3,     4,     5,     6,     7,     8,
  20007.       9,    -1,    11,    12,    13,    -1,    15,    16,    17,    18,
  20008.      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
  20009.      29,    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,
  20010. -  1227,    40,    41,    42,    43,    -1,    -1,    46,    47,    48,
  20011. +    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,    48,
  20012.      49,    50,    51,    -1,    53,    54,    -1,    56,    -1,    -1,
  20013.      -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,
  20014. -    -1,    -1,   841,   842,    73,    74,    75,    -1,    -1,    -1,
  20015. -   849,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,    88,
  20016. +    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,
  20017. +    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,    88,
  20018.      -1,    90,    -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,
  20019. -    -1,    -1,    -1,    -1,   103,   104,    -1,    -1,   877,    -1,
  20020. -    -1,   880,    -1,   882,    -1,    -1,    -1,  1004,  1005,    -1,
  20021. -  1007,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
  20022. -    -1,    11,    12,    13,    -1,    15,    16,    17,    18,    19,
  20023. -    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
  20024. -    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
  20025. -    40,    41,    42,    43,    -1,    -1,    46,    47,    48,    49,
  20026. -    50,    51,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,
  20027. -    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,   958,
  20028. -    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
  20029. -    -1,    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,
  20030. -    90,    -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20031. -    -1,    -1,   991,   103,   104,    -1,    -1,    -1,    -1,    -1,
  20032. -    -1,    -1,    -1,    -1,    -1,  1004,  1005,    -1,  1007,    -1,
  20033. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20034. -    -1,    -1,    -1,     1,    -1,     3,     4,     5,     6,     7,
  20035. -     8,     9,    -1,    11,    12,    13,  1035,    15,    16,    17,
  20036. -    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
  20037. -    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
  20038. -    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,
  20039. -    48,    49,    50,    51,    -1,    53,    54,    -1,    56,    -1,
  20040. -    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,
  20041. -    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,
  20042. -    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,
  20043. -    88,    -1,    90,    -1,    92,    -1,    -1,    -1,    -1,    -1,
  20044. -    -1,    -1,    -1,    -1,    -1,   103,   104,     1,    -1,     3,
  20045. -     4,     5,     6,     7,     8,     9,    -1,    11,    12,    13,
  20046. -    -1,    15,    16,    17,    18,    19,    20,    21,    22,    23,
  20047. -    24,    25,    26,    27,    28,    29,    30,    31,    -1,    33,
  20048. -    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,    43,
  20049. -    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
  20050. -    54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,
  20051. -    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
  20052. -    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
  20053. -    -1,    -1,    -1,    -1,    88,    -1,    90,    -1,    92,    -1,
  20054. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,
  20055. -   104,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
  20056. -    -1,    11,    12,    13,    -1,    15,    16,    17,    18,    19,
  20057. -    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
  20058. -    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
  20059. -    40,    41,    42,    43,    -1,    -1,    46,    47,    48,    49,
  20060. -    50,    51,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,
  20061. -    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,
  20062. -    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
  20063. -    -1,    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,
  20064. -    90,    -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20065. -    -1,    -1,    -1,   103,   104,     1,    -1,     3,     4,     5,
  20066. -     6,     7,     8,     9,    -1,    11,    12,    13,    -1,    15,
  20067. -    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
  20068. -    26,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
  20069. -    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,
  20070. -    46,    47,    48,    49,    50,    51,    -1,    53,    54,    -1,
  20071. -    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
  20072. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
  20073. -    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,
  20074. -    -1,    -1,    88,    -1,    90,     1,    92,     3,     4,     5,
  20075. -     6,     7,     8,     9,    -1,    11,    12,    13,   104,    15,
  20076. -    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
  20077. -    26,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
  20078. -    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,
  20079. -    46,    47,    48,    49,    50,    51,    -1,    53,    54,    -1,
  20080. -    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
  20081. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
  20082. -    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,
  20083. -    -1,    -1,    88,    -1,    90,     1,    92,     3,     4,     5,
  20084. -     6,     7,     8,     9,    -1,    11,    12,    13,   104,    15,
  20085. -    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
  20086. -    26,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
  20087. -    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,
  20088. -    46,    47,    48,    49,    50,    51,    -1,    53,    54,    -1,
  20089. -    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
  20090. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
  20091. -    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,
  20092. -    -1,    -1,    88,    -1,    90,     1,    92,     3,     4,     5,
  20093. -     6,     7,     8,     9,    10,    11,    12,    -1,   104,    -1,
  20094. +    -1,    -1,    -1,    -1,   103,   104,     1,    -1,     3,     4,
  20095. +     5,     6,     7,     8,     9,    -1,    11,    12,    13,    -1,
  20096. +    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
  20097. +    25,    26,    27,    28,    29,    30,    31,    -1,    33,    -1,
  20098. +    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
  20099. +    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
  20100. +    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
  20101. +    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
  20102. +    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
  20103. +    -1,    -1,    -1,    88,    -1,    90,    -1,    92,    -1,    -1,
  20104. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,   104,
  20105. +     1,    -1,     3,     4,     5,     6,     7,     8,     9,    -1,
  20106. +    11,    12,    13,    -1,    15,    16,    17,    18,    19,    20,
  20107. +    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
  20108. +    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
  20109. +    41,    42,    43,    -1,    -1,    46,    47,    48,    49,    50,
  20110. +    51,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,    -1,
  20111. +    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
  20112. +    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
  20113. +    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,    90,
  20114. +    -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20115. +    -1,    -1,   103,   104,     1,    -1,     3,     4,     5,     6,
  20116. +     7,     8,     9,    -1,    11,    12,    13,    -1,    15,    16,
  20117. +    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
  20118. +    27,    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,
  20119. +    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,
  20120. +    47,    48,    49,    50,    51,    -1,    53,    54,    -1,    56,
  20121. +    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,
  20122. +    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,
  20123. +    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,
  20124. +    -1,    88,    -1,    90,     1,    92,     3,     4,     5,     6,
  20125. +     7,     8,     9,    -1,    11,    12,    13,   104,    15,    16,
  20126. +    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
  20127. +    27,    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,
  20128. +    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,
  20129. +    47,    48,    49,    50,    51,    -1,    53,    54,    -1,    56,
  20130. +    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,
  20131. +    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,
  20132. +    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,
  20133. +    -1,    88,    -1,    90,     1,    92,     3,     4,     5,     6,
  20134. +     7,     8,     9,    -1,    11,    12,    13,   104,    15,    16,
  20135. +    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
  20136. +    27,    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,
  20137. +    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,
  20138. +    47,    48,    49,    50,    51,    -1,    53,    54,    -1,    56,
  20139. +    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,
  20140. +    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,
  20141. +    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,
  20142. +    -1,    88,    -1,    90,     1,    92,     3,     4,     5,     6,
  20143. +     7,     8,     9,    10,    11,    12,    -1,   104,    -1,    -1,
  20144.      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20145. -    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
  20146. -    -1,    37,    38,    -1,    40,    41,    42,    43,    44,    -1,
  20147. -    46,    47,    48,    49,    50,    51,    -1,    53,    54,    -1,
  20148. -    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
  20149. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
  20150. -    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    85,
  20151. -    -1,    -1,    88,    89,    -1,    -1,    92,    93,    -1,    -1,
  20152. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,   104,     3,
  20153. -     4,     5,     6,     7,     8,     9,    10,    11,    12,    -1,
  20154. +    27,    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,
  20155. +    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,
  20156. +    47,    48,    49,    50,    51,    -1,    53,    -1,    -1,    -1,
  20157. +    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,
  20158. +    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,
  20159. +    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,
  20160. +    -1,    88,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
  20161. +    -1,    -1,    -1,    -1,    -1,   102,     1,   104,     3,     4,
  20162. +    -1,     6,     7,     8,     9,    -1,    11,    12,    66,    67,
  20163. +    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
  20164. +    78,    79,    27,    28,    29,    30,    31,    -1,    33,    -1,
  20165. +    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
  20166. +    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
  20167. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
  20168. +    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
  20169. +    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
  20170. +    -1,    -1,    -1,    88,    89,    -1,     1,    92,     3,     4,
  20171. +    -1,     6,     7,     8,     9,    -1,    11,    12,   103,   104,
  20172. +    -1,    -1,    -1,    -1,    19,    -1,    -1,    -1,    -1,    -1,
  20173. +    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
  20174. +    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
  20175. +    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
  20176. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
  20177. +    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
  20178. +    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
  20179. +    -1,    -1,    -1,    88,    -1,    -1,     1,    92,     3,     4,
  20180. +    -1,     6,     7,     8,     9,    -1,    11,    12,   103,   104,
  20181. +    -1,    -1,    -1,    -1,    19,    -1,    -1,    -1,    -1,    -1,
  20182. +    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
  20183. +    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
  20184. +    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
  20185. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
  20186. +    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
  20187. +    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
  20188. +    -1,    -1,    -1,    88,    -1,    -1,     1,    92,     3,     4,
  20189. +     5,     6,     7,     8,     9,    -1,    11,    12,   103,   104,
  20190.      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20191. -    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,
  20192. -    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,    43,
  20193. -    44,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
  20194. -    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,
  20195. -    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
  20196. -    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
  20197. -    -1,    85,    -1,    -1,    88,    89,    -1,    -1,    92,    93,
  20198. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
  20199. -   104,     3,     4,     5,     6,     7,     8,     9,    10,    11,
  20200. -    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20201. -    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,
  20202. -    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,
  20203. -    42,    43,    -1,    -1,    46,    47,    48,    49,    50,    51,
  20204. -    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20205. -    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
  20206. -    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,
  20207. -    82,    83,    -1,    -1,    -1,    -1,    88,    -1,    -1,    -1,
  20208. -    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20209. -   102,     1,   104,     3,     4,     5,     6,     7,     8,     9,
  20210. -    10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20211. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,
  20212. -    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
  20213. -    40,    41,    42,    43,    -1,    -1,    46,    47,    48,    49,
  20214. -    50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,
  20215. -    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,
  20216. -    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
  20217. -    -1,    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,
  20218. -    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,
  20219. -    -1,    -1,   102,     1,   104,     3,     4,    -1,     6,     7,
  20220. +    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
  20221. +    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
  20222. +    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
  20223. +    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
  20224. +    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
  20225. +    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,     1,
  20226. +    -1,    -1,     4,    88,     6,     7,    -1,    92,    -1,    -1,
  20227. +    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,
  20228. +    -1,    -1,    -1,    -1,    -1,    27,    -1,    -1,    -1,    31,
  20229. +    -1,    -1,    -1,    35,    -1,    37,    38,    -1,    -1,    -1,
  20230. +    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,    51,
  20231. +    -1,    53,    -1,    55,    -1,    57,    58,    59,    -1,    61,
  20232. +    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
  20233. +    72,    73,    74,    75,    76,    77,    78,    -1,    -1,    81,
  20234. +    82,    83,    -1,     1,    86,     3,     4,    89,     6,     7,
  20235.       8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,    -1,
  20236. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
  20237. +    -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,    27,
  20238.      28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
  20239.      38,    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,
  20240.      48,    49,    50,    51,    -1,    53,    54,    -1,    -1,    -1,
  20241.      -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,
  20242.      -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,
  20243.      -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,
  20244. -    88,    89,    -1,     1,    92,     3,     4,    -1,     6,     7,
  20245. -     8,     9,    -1,    11,    12,   103,   104,    -1,    -1,    -1,
  20246. -    -1,    19,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
  20247. +    88,    -1,    -1,     1,    92,     3,     4,    -1,     6,     7,
  20248. +     8,     9,    -1,    11,    12,    -1,   104,    -1,    -1,    -1,
  20249. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
  20250.      28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
  20251.      38,    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,
  20252.      48,    49,    50,    51,    -1,    53,    54,    -1,    -1,    -1,
  20253. @@ -2835,20 +2829,20 @@
  20254.      -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,
  20255.      -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,
  20256.      88,    -1,    -1,     1,    92,     3,     4,    -1,     6,     7,
  20257. -     8,     9,    -1,    11,    12,   103,   104,    -1,    -1,    -1,
  20258. -    -1,    19,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
  20259. +     8,     9,    -1,    11,    12,    -1,   104,    -1,    -1,    -1,
  20260. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
  20261.      28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
  20262.      38,    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,
  20263.      48,    49,    50,    51,    -1,    53,    54,    -1,    -1,    -1,
  20264.      -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,
  20265.      -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,
  20266.      -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,
  20267. -    88,    -1,    -1,     1,    92,     3,     4,     5,     6,     7,
  20268. -     8,     9,    -1,    11,    12,   103,   104,    -1,    -1,    -1,
  20269. +    88,    -1,    -1,     1,    92,     3,     4,    -1,     6,     7,
  20270. +     8,     9,    -1,    11,    12,    -1,   104,    -1,    -1,    -1,
  20271.      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
  20272.      28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
  20273.      38,    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,
  20274. -    48,    49,    50,    51,    -1,    53,    54,    -1,    56,    -1,
  20275. +    48,    49,    50,    51,    -1,    53,    -1,    -1,    56,    -1,
  20276.      -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,
  20277.      -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,
  20278.      -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,
  20279. @@ -2857,177 +2851,97 @@
  20280.      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
  20281.      28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
  20282.      38,    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,
  20283. -    48,    49,    50,    51,    -1,    53,    54,    -1,    -1,    -1,
  20284. +    48,    49,    50,    51,    -1,    53,    -1,    -1,    -1,    -1,
  20285.      -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,
  20286.      -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,
  20287.      -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,
  20288. -    88,    89,     1,    -1,    92,     4,    -1,     6,     7,    -1,
  20289. -    -1,    -1,    -1,    12,    -1,    -1,   104,    -1,    -1,    -1,
  20290. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    -1,
  20291. -    -1,    -1,    31,    -1,    -1,    -1,    35,    -1,    37,    38,
  20292. -    -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,
  20293. -    -1,    -1,    51,    -1,    53,    -1,    55,    -1,    57,    58,
  20294. -    59,    -1,    61,    62,    63,    64,    65,    66,    67,    68,
  20295. -    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
  20296. -    -1,    -1,    81,    82,    83,    -1,     1,    86,     3,     4,
  20297. -    89,     6,     7,     8,     9,    -1,    11,    12,    -1,    -1,
  20298. -    -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,
  20299. -    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
  20300. -    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
  20301. -    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
  20302. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
  20303. -    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
  20304. -    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
  20305. -    -1,    -1,    -1,    88,    -1,    -1,     1,    92,     3,     4,
  20306. -    -1,     6,     7,     8,     9,    -1,    11,    12,    -1,   104,
  20307. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20308. -    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
  20309. -    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
  20310. -    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
  20311. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
  20312. -    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
  20313. -    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
  20314. -    -1,    -1,    -1,    88,    -1,    -1,     1,    92,     3,     4,
  20315. -    -1,     6,     7,     8,     9,    -1,    11,    12,    -1,   104,
  20316. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20317. -    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
  20318. -    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
  20319. -    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    -1,
  20320. -    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    -1,
  20321. -    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
  20322. -    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
  20323. -    -1,    -1,    -1,    88,    -1,    -1,     1,    92,     3,     4,
  20324. -    -1,     6,     7,     8,     9,    -1,    11,    12,    -1,   104,
  20325. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20326. -    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
  20327. -    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
  20328. -    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
  20329. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
  20330. -    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
  20331. -    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
  20332. -    -1,    -1,    -1,    88,    -1,    -1,     1,    92,     3,     4,
  20333. -    -1,     6,     7,     8,     9,    -1,    11,    12,    -1,   104,
  20334. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20335. -    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
  20336. -    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
  20337. -    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
  20338. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
  20339. -    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
  20340. -    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
  20341. -    -1,    -1,    -1,    88,    -1,    -1,     1,    92,     3,     4,
  20342. -    -1,     6,     7,     8,     9,    -1,    11,    12,    -1,   104,
  20343. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20344. -    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
  20345. -    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
  20346. -    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    -1,
  20347. -    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
  20348. -    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
  20349. -    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
  20350. -    -1,    -1,    -1,    88,    -1,    -1,     1,    92,     3,     4,
  20351. -    -1,     6,     7,     8,     9,    -1,    11,    12,    -1,   104,
  20352. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20353. -    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
  20354. -    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
  20355. -    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    -1,
  20356. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
  20357. -    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
  20358. -    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
  20359. -    -1,    -1,    -1,    88,    -1,    -1,    -1,    92,    -1,    -1,
  20360. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,     1,   104,
  20361. -     3,     4,    -1,     6,     7,     8,     9,    -1,    11,    12,
  20362. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20363. -    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,
  20364. -    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
  20365. -    43,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
  20366. -    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,
  20367. -    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20368. -    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,
  20369. -    83,    -1,    -1,    -1,    -1,    88,    -1,    -1,     1,    92,
  20370. -     3,     4,    -1,     6,     7,     8,     9,    -1,    11,    12,
  20371. -    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20372. -    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,
  20373. -    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
  20374. -    43,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
  20375. -    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,
  20376. -    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20377. -    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,
  20378. -    83,    -1,    -1,    -1,    -1,    88,    -1,     3,     4,    92,
  20379. -     6,     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,
  20380. -    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20381. +    88,    -1,    -1,    -1,    92,    -1,    -1,    -1,    -1,    -1,
  20382. +    -1,    -1,    -1,    -1,   102,     1,   104,     3,     4,    -1,
  20383. +     6,     7,     8,     9,    -1,    11,    12,    67,    68,    69,
  20384. +    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
  20385.      -1,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
  20386.      -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,
  20387.      46,    47,    48,    49,    50,    51,    -1,    53,    -1,    -1,
  20388. -    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
  20389. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
  20390. -    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,
  20391. -    -1,    -1,    88,    -1,    -1,    -1,    92,    -1,    -1,    -1,
  20392. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,   105,
  20393. -     3,     4,     5,     6,     7,     8,     9,    -1,    11,    12,
  20394. -    13,    -1,    15,    16,    17,    18,    19,    20,    21,    22,
  20395. -    23,    24,    25,    26,    27,    28,    29,    30,    31,    -1,
  20396. -    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
  20397. -    43,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
  20398. -    53,    54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,
  20399. -    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20400. -    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,
  20401. -    83,    -1,    -1,    -1,    -1,    88,    -1,    90,    -1,    92,
  20402. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20403. -   103,   104,     3,     4,     5,     6,     7,     8,     9,    -1,
  20404. -    11,    12,    13,    -1,    15,    16,    17,    18,    19,    20,
  20405. -    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
  20406. -    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
  20407. -    41,    42,    43,    -1,    -1,    46,    47,    48,    49,    50,
  20408. -    51,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,    -1,
  20409. -    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
  20410. -    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
  20411. -    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,    90,
  20412. -    -1,    92,     3,     4,     5,     6,     7,     8,     9,    -1,
  20413. -    11,    12,    13,   104,    15,    16,    17,    18,    19,    20,
  20414. -    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
  20415. -    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
  20416. -    41,    42,    43,    -1,    -1,    46,    47,    48,    49,    50,
  20417. -    51,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,    -1,
  20418. -    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
  20419. -    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
  20420. -    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,    90,
  20421. -    -1,    92,     3,     4,     5,     6,     7,     8,     9,    -1,
  20422. -    11,    12,    13,   104,    15,    16,    17,    18,    19,    20,
  20423. -    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
  20424. -    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
  20425. -    41,    42,    43,    -1,    -1,    46,    47,    48,    49,    50,
  20426. -    51,    -1,    53,    -1,    -1,    56,    -1,    -1,    -1,    -1,
  20427. -    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
  20428. -    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
  20429. -    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,    90,
  20430. -    -1,    92,     3,     4,     5,     6,     7,     8,     9,    10,
  20431. -    11,    12,    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,
  20432. -    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,
  20433. -    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
  20434. -    41,    42,    43,    44,    -1,    46,    47,    48,    49,    50,
  20435. -    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20436. -    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
  20437. -    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
  20438. -    81,    82,    83,    -1,    85,    -1,    -1,    88,    89,    -1,
  20439. -    -1,    92,    93,     3,     4,     5,     6,     7,     8,     9,
  20440. -    10,    11,    12,   104,    -1,    -1,    -1,    -1,    -1,    -1,
  20441. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,
  20442. -    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
  20443. -    40,    41,    42,    43,    44,    -1,    46,    47,    48,    49,
  20444. -    50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,
  20445. -    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,
  20446. -    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
  20447. -    -1,    81,    82,    83,    -1,    85,    -1,    -1,    88,    89,
  20448. -    -1,    -1,    92,    93,     3,     4,    -1,     6,     7,     8,
  20449. -     9,    -1,    11,    12,   104,    -1,    -1,    -1,    -1,    -1,
  20450. +    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
  20451. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
  20452. +    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,
  20453. +    -1,    -1,    88,    -1,    -1,     1,    92,     3,     4,    -1,
  20454. +     6,     7,     8,     9,    -1,    11,    12,    -1,   104,    -1,
  20455. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20456. +    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
  20457. +    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,
  20458. +    46,    47,    48,    49,    50,    51,    -1,    53,    -1,    -1,
  20459. +    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
  20460. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
  20461. +    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,
  20462. +    -1,    -1,    88,    -1,     3,     4,    92,     6,     7,     8,
  20463. +     9,    -1,    11,    12,    -1,    -1,    -1,    -1,   104,    -1,
  20464.      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,
  20465.      29,    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,
  20466. -    -1,    40,    41,    42,    43,    44,    -1,    46,    47,    48,
  20467. +    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,    48,
  20468.      49,    50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,
  20469.      -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,
  20470.      -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,
  20471. -    -1,    -1,    81,    82,    83,    -1,    85,    -1,    -1,    88,
  20472. -    89,     3,     4,    -1,     6,     7,     8,     9,    -1,    11,
  20473. -    12,    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,
  20474. +    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,    88,
  20475. +    -1,    -1,    -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,
  20476. +    -1,    -1,    -1,    -1,    -1,   104,   105,     3,     4,     5,
  20477. +     6,     7,     8,     9,    -1,    11,    12,    13,    -1,    15,
  20478. +    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
  20479. +    26,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
  20480. +    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,
  20481. +    46,    47,    48,    49,    50,    51,    -1,    53,    54,    -1,
  20482. +    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
  20483. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
  20484. +    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,
  20485. +    -1,    -1,    88,    -1,    90,    -1,    92,    -1,    -1,    -1,
  20486. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,   104,     3,
  20487. +     4,     5,     6,     7,     8,     9,    -1,    11,    12,    13,
  20488. +    -1,    15,    16,    17,    18,    19,    20,    21,    22,    23,
  20489. +    24,    25,    26,    27,    28,    29,    30,    31,    -1,    33,
  20490. +    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,    43,
  20491. +    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
  20492. +    54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,
  20493. +    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
  20494. +    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
  20495. +    -1,    -1,    -1,    -1,    88,    -1,    90,    -1,    92,     3,
  20496. +     4,     5,     6,     7,     8,     9,    -1,    11,    12,    13,
  20497. +   104,    15,    16,    17,    18,    19,    20,    21,    22,    23,
  20498. +    24,    25,    26,    27,    28,    29,    30,    31,    -1,    33,
  20499. +    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,    43,
  20500. +    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
  20501. +    54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,
  20502. +    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
  20503. +    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
  20504. +    -1,    -1,    -1,    -1,    88,    -1,    90,    -1,    92,     3,
  20505. +     4,     5,     6,     7,     8,     9,    -1,    11,    12,    13,
  20506. +   104,    15,    16,    17,    18,    19,    20,    21,    22,    23,
  20507. +    24,    25,    26,    27,    28,    29,    30,    31,    -1,    33,
  20508. +    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,    43,
  20509. +    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
  20510. +    -1,    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,
  20511. +    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
  20512. +    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
  20513. +    -1,    -1,    -1,    -1,    88,    -1,    90,    -1,    92,     3,
  20514. +     4,     5,     6,     7,     8,     9,    10,    11,    12,    -1,
  20515. +   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20516. +    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,
  20517. +    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,    43,
  20518. +    44,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
  20519. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,
  20520. +    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
  20521. +    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
  20522. +    -1,    85,    -1,    -1,    88,    89,    -1,    -1,    92,    93,
  20523. +     3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
  20524. +   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20525. +    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,
  20526. +    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
  20527. +    43,    44,    -1,    46,    47,    48,    49,    50,    51,    -1,
  20528. +    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,
  20529. +    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20530. +    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,
  20531. +    83,    -1,    85,    -1,    -1,    88,    89,    -1,    -1,    92,
  20532. +    93,     3,     4,    -1,     6,     7,     8,     9,    -1,    11,
  20533. +    12,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20534.      -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,
  20535.      -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,
  20536.      42,    43,    44,    -1,    46,    47,    48,    49,    50,    51,
  20537. @@ -3038,27 +2952,27 @@
  20538.      -1,     6,     7,     8,     9,    -1,    11,    12,    -1,    -1,
  20539.      -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20540.      -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
  20541. -    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
  20542. +    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    44,
  20543.      -1,    46,    47,    48,    49,    50,    51,    -1,    53,    -1,
  20544.      -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
  20545. -    65,    -1,    -1,    -1,    -1,    70,    -1,    -1,    73,    74,
  20546. +    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
  20547.      75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
  20548. -    -1,    -1,    -1,    88,    -1,     3,     4,    92,     6,     7,
  20549. +    85,    -1,    -1,    88,    89,     3,     4,    -1,     6,     7,
  20550.       8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,   104,
  20551.      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
  20552.      28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
  20553. -    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,
  20554. -    48,    49,    50,    51,    -1,    53,    -1,    -1,    56,    -1,
  20555. +    38,    -1,    40,    41,    42,    43,    44,    -1,    46,    47,
  20556. +    48,    49,    50,    51,    -1,    53,    -1,    -1,    -1,    -1,
  20557.      -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,
  20558.      -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,
  20559. -    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,
  20560. -    88,    -1,     3,     4,    92,     6,     7,     8,     9,    -1,
  20561. +    -1,    -1,    -1,    81,    82,    83,    -1,    85,    -1,    -1,
  20562. +    88,    89,     3,     4,    -1,     6,     7,     8,     9,    -1,
  20563.      11,    12,    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,
  20564.      -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,
  20565.      31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
  20566.      41,    42,    43,    -1,    -1,    46,    47,    48,    49,    50,
  20567.      51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20568. -    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
  20569. +    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    70,
  20570.      -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
  20571.      81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,     3,
  20572.       4,    92,     6,     7,     8,     9,    -1,    11,    12,    -1,
  20573. @@ -3066,24 +2980,7 @@
  20574.      -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,
  20575.      -1,    35,    -1,    37,    38,    -1,    40,    41,    42,    43,
  20576.      -1,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
  20577. -    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,
  20578. -    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
  20579. -    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
  20580. -    -1,    -1,     3,     4,    88,     6,     7,     8,     9,    -1,
  20581. -    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20582. -   104,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,
  20583. -    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
  20584. -    41,    42,    43,    -1,    -1,    46,    47,    48,    49,    50,
  20585. -    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20586. -    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
  20587. -    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
  20588. -    81,    82,    83,    -1,    -1,    -1,    -1,    88,    89,     3,
  20589. -     4,    -1,     6,     7,     8,     9,    -1,    11,    12,    -1,
  20590. -    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,
  20591. -    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,
  20592. -    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,    43,
  20593. -    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
  20594. -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,
  20595. +    -1,    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,
  20596.      -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
  20597.      74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
  20598.      -1,    -1,    -1,    -1,    88,    -1,     3,     4,    92,     6,
  20599. @@ -3100,6 +2997,23 @@
  20600.      -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,
  20601.      30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
  20602.      40,    41,    42,    43,    -1,    -1,    46,    47,    48,    49,
  20603. +    50,    51,    -1,    53,    54,    -1,    -1,    -1,    -1,    -1,
  20604. +    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,
  20605. +    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
  20606. +    -1,    81,    82,    83,    -1,    -1,     3,     4,    88,     6,
  20607. +     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,
  20608. +    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,
  20609. +    27,    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,
  20610. +    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,
  20611. +    47,    48,    49,    50,    51,    -1,    53,    -1,    -1,    -1,
  20612. +    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,
  20613. +    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,
  20614. +    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,
  20615. +    -1,    88,    89,     3,     4,    -1,     6,     7,     8,     9,
  20616. +    -1,    11,    12,    -1,    -1,    -1,    -1,   104,    -1,    -1,
  20617. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,
  20618. +    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
  20619. +    40,    41,    42,    43,    -1,    -1,    46,    47,    48,    49,
  20620.      50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,
  20621.      -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,
  20622.      -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
  20623. @@ -3129,10 +3043,44 @@
  20624.      49,    50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,
  20625.      -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,
  20626.      -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,
  20627. +    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,    88,
  20628. +    -1,     3,     4,    92,     6,     7,     8,     9,    -1,    11,
  20629. +    12,    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,
  20630. +    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,
  20631. +    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,
  20632. +    42,    43,    -1,    -1,    46,    47,    48,    49,    50,    51,
  20633. +    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20634. +    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
  20635. +    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,
  20636. +    82,    83,    -1,    -1,    -1,    -1,    88,    -1,     3,     4,
  20637. +    92,     6,     7,     8,     9,    -1,    11,    12,    -1,    -1,
  20638. +    -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20639. +    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
  20640. +    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
  20641. +    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    -1,
  20642. +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
  20643. +    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
  20644. +    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
  20645. +    -1,     3,     4,    88,     6,     7,     8,     9,    -1,    11,
  20646. +    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,
  20647. +    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,
  20648. +    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,
  20649. +    42,    43,    -1,    -1,    46,    47,    48,    49,    50,    51,
  20650. +    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20651. +    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
  20652. +    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,
  20653. +    82,    83,    -1,    -1,     3,     4,    88,     6,     7,     8,
  20654. +     9,    -1,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,
  20655. +    -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,    27,    28,
  20656. +    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,
  20657. +    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,    48,
  20658. +    49,    50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,
  20659. +    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,
  20660. +    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,
  20661.      -1,    -1,    81,    82,    83,    -1,    -1,     3,     4,    88,
  20662.       6,     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,
  20663.      -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,
  20664. -    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
  20665. +    -1,    27,    28,    -1,    -1,    31,    -1,    33,    -1,    35,
  20666.      -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,
  20667.      46,    47,    48,    49,    50,    51,    -1,    53,    -1,    -1,
  20668.      -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
  20669. @@ -3143,43 +3091,60 @@
  20670.      -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,
  20671.      33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
  20672.      43,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
  20673. -    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,
  20674. -    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20675. -    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,
  20676. -    83,    -1,    -1,     3,     4,    88,     6,     7,     8,     9,
  20677. -    -1,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20678. -    -1,   104,    -1,    -1,    -1,    -1,    -1,    27,    28,    -1,
  20679. -    -1,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
  20680. -    40,    41,    42,    43,    -1,    -1,    46,    47,    48,    49,
  20681. -    50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,
  20682. -    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,
  20683. -    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
  20684. -    -1,    81,    82,    83,    -1,    -1,     3,     4,    88,     6,
  20685. -     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,
  20686. -    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,
  20687. -    27,    28,    -1,    -1,    31,    -1,    33,    -1,    35,    -1,
  20688. -    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,
  20689. -    47,    48,    49,    50,    51,    -1,    53,    -1,    -1,    -1,
  20690. -    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,
  20691. -    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,
  20692. -    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,
  20693. -    -1,    88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20694. -    -1,    -1,    55,    -1,    57,    58,    59,   104,    61,    62,
  20695. -    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
  20696. -    73,    74,    75,    76,    77,    78,    79,    57,    58,    59,
  20697. -    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
  20698. +    53,    -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,
  20699. +    -1,    12,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
  20700. +     6,     7,    -1,    -1,    -1,    -1,    12,    -1,    81,    82,
  20701. +    83,    -1,    -1,    -1,    35,    88,    -1,    -1,    -1,    92,
  20702. +    41,    27,    -1,    44,    -1,    31,    -1,    -1,    -1,    35,
  20703. +    51,   104,    53,    -1,    -1,    41,    -1,    -1,    -1,    -1,
  20704. +    -1,    -1,    -1,    -1,    65,    51,    -1,    53,    -1,    -1,
  20705. +    56,    -1,    -1,    -1,    75,    -1,    -1,    -1,    -1,    65,
  20706. +    -1,    -1,    83,    -1,    85,    -1,    -1,    88,    89,    75,
  20707. +    -1,     3,     4,     5,     6,     7,    -1,    83,    10,    -1,
  20708. +    12,    -1,    88,    -1,    -1,    -1,    -1,    -1,     3,     4,
  20709. +     5,     6,     7,    -1,    -1,    27,    -1,    12,    -1,    31,
  20710. +    -1,    -1,    -1,    35,    -1,    -1,    -1,    -1,    -1,    41,
  20711. +    -1,    -1,    27,    -1,    -1,    -1,    31,    -1,    -1,    51,
  20712. +    35,    53,    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,
  20713. +    -1,    -1,    -1,    65,    -1,    -1,    51,    -1,    53,    -1,
  20714. +    -1,    -1,    -1,    75,    -1,    60,    -1,    -1,    -1,    -1,
  20715. +    65,    83,    -1,    -1,    -1,    -1,    88,    -1,    -1,    -1,
  20716. +    75,     3,     4,     5,     6,     7,    -1,    -1,    83,    -1,
  20717. +    12,    -1,    -1,    88,    -1,    -1,    -1,    -1,     3,     4,
  20718. +     5,     6,     7,    -1,    -1,    27,    -1,    12,    -1,    31,
  20719. +    -1,    -1,    -1,    35,    -1,    -1,    -1,    -1,    -1,    41,
  20720. +    -1,    -1,    27,    -1,    -1,    -1,    31,    -1,    -1,    51,
  20721. +    35,    53,    -1,    -1,    56,    -1,    41,    -1,    -1,    -1,
  20722. +    -1,    -1,     4,    65,     6,     7,    51,    -1,    53,    -1,
  20723. +    12,    -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,
  20724. +    65,    83,    -1,    -1,    -1,    27,    88,    -1,    -1,    31,
  20725. +    75,    -1,    -1,    35,    -1,    -1,    -1,    -1,    83,    -1,
  20726. +    -1,    -1,    44,    88,    -1,    -1,    -1,    -1,    -1,    51,
  20727. +    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  20728. +    57,    58,    59,    65,    61,    62,    63,    64,    65,    66,
  20729. +    67,    68,    69,    75,    71,    72,    73,    74,    75,    76,
  20730. +    77,    78,    79,    85,    -1,    -1,    88,    89,    57,    58,
  20731. +    59,    -1,    61,    62,    63,    64,    65,    66,    67,    68,
  20732. +    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
  20733. +    79,    55,    32,    57,    58,    59,    -1,    61,    62,    63,
  20734. +    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
  20735. +    74,    75,    76,    77,    78,    79,   105,    57,    58,    59,
  20736. +    -1,    61,    62,    63,    64,    65,    66,    67,    68,    69,
  20737.      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
  20738.      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
  20739.      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
  20740. -    77,    78,    79,    57,    58,    59,    -1,    61,    62,    63,
  20741. +    77,    78,    79,    57,    58,    59,    60,    61,    62,    63,
  20742.      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
  20743.      74,    75,    76,    77,    78,    79,    57,    58,    59,    -1,
  20744. -    61,    62,    63,    64,    65,    66,    67,    68,    69,    -1,
  20745. +    61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
  20746.      71,    72,    73,    74,    75,    76,    77,    78,    79,    59,
  20747.      -1,    61,    62,    63,    64,    65,    66,    67,    68,    69,
  20748.      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
  20749. -    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
  20750. -    73,    74,    75,    76,    77,    78,    79
  20751. +    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
  20752. +    72,    73,    74,    75,    76,    77,    78,    79,    64,    65,
  20753. +    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
  20754. +    76,    77,    78,    79,    65,    66,    67,    68,    69,    70,
  20755. +    71,    72,    73,    74,    75,    76,    77,    78,    79
  20756.  };
  20757.  /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
  20758.  #line 3 "/usr/local/lib/bison.simple"
  20759. @@ -3364,23 +3329,8 @@
  20760.  #endif
  20761.  
  20762.  #line 184 "/usr/local/lib/bison.simple"
  20763. -
  20764. -/* The user can define YYPARSE_PARAM as the name of an argument to be passed
  20765. -   into yyparse.  The argument should have type void *.
  20766. -   It should actually point to an object.
  20767. -   Grammar actions can access the variable by casting it
  20768. -   to the proper pointer type.  */
  20769. -
  20770. -#ifdef YYPARSE_PARAM
  20771. -#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
  20772. -#else
  20773. -#define YYPARSE_PARAM
  20774. -#define YYPARSE_PARAM_DECL
  20775. -#endif
  20776. -
  20777.  int
  20778. -yyparse(YYPARSE_PARAM)
  20779. -     YYPARSE_PARAM_DECL
  20780. +yyparse()
  20781.  {
  20782.    register int yystate;
  20783.    register int yyn;
  20784. @@ -4767,21 +4717,13 @@
  20785.  #line 1253 "parse.y"
  20786.  { yyval.ttype = build_parse_node (ADDR_EXPR, yyvsp[0].ttype); ;
  20787.      break;}
  20788. -case 228:
  20789. -#line 1255 "parse.y"
  20790. -{ yyval.ttype = yyvsp[-1].ttype; ;
  20791. -    break;}
  20792. -case 231:
  20793. -#line 1262 "parse.y"
  20794. +case 230:
  20795. +#line 1260 "parse.y"
  20796.  { push_nested_class (TREE_TYPE (OP0 (yyval.ttype)), 3);
  20797.            TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ;
  20798.      break;}
  20799. -case 232:
  20800. -#line 1265 "parse.y"
  20801. -{ yyval.ttype = finish_decl_parsing (yyvsp[-1].ttype); ;
  20802. -    break;}
  20803. -case 233:
  20804. -#line 1270 "parse.y"
  20805. +case 231:
  20806. +#line 1266 "parse.y"
  20807.  {
  20808.            if (TREE_CODE (yyval.ttype) == BIT_NOT_EXPR)
  20809.              yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, TREE_OPERAND (yyval.ttype, 0));
  20810. @@ -4801,20 +4743,20 @@
  20811.              yyval.ttype = do_identifier (yyval.ttype);
  20812.          ;
  20813.      break;}
  20814. -case 236:
  20815. -#line 1291 "parse.y"
  20816. +case 234:
  20817. +#line 1287 "parse.y"
  20818.  { yyval.ttype = combine_strings (yyval.ttype); ;
  20819.      break;}
  20820. -case 237:
  20821. -#line 1293 "parse.y"
  20822. +case 235:
  20823. +#line 1289 "parse.y"
  20824.  { yyval.ttype = yyvsp[-1].ttype; ;
  20825.      break;}
  20826. -case 238:
  20827. -#line 1295 "parse.y"
  20828. +case 236:
  20829. +#line 1291 "parse.y"
  20830.  { yyval.ttype = error_mark_node; ;
  20831.      break;}
  20832. -case 239:
  20833. -#line 1297 "parse.y"
  20834. +case 237:
  20835. +#line 1293 "parse.y"
  20836.  { if (current_function_decl == 0)
  20837.              {
  20838.                error ("braced-group within expression allowed only inside a function");
  20839. @@ -4823,8 +4765,8 @@
  20840.            keep_next_level ();
  20841.            yyval.ttype = expand_start_stmt_expr (); ;
  20842.      break;}
  20843. -case 240:
  20844. -#line 1305 "parse.y"
  20845. +case 238:
  20846. +#line 1301 "parse.y"
  20847.  { tree rtl_exp;
  20848.            if (flag_ansi)
  20849.              pedwarn ("ANSI C++ forbids braced-groups within expressions");
  20850. @@ -4846,16 +4788,16 @@
  20851.              yyval.ttype = yyvsp[-1].ttype;
  20852.          ;
  20853.      break;}
  20854. -case 241:
  20855. -#line 1326 "parse.y"
  20856. +case 239:
  20857. +#line 1322 "parse.y"
  20858.  { /* [eichin:19911016.1902EST] */
  20859.                    yyval.ttype = build_x_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype, current_class_decl); 
  20860.                    /* here we instantiate_class_template as needed... */
  20861.                    do_pending_templates ();
  20862.                  ;
  20863.      break;}
  20864. -case 242:
  20865. -#line 1330 "parse.y"
  20866. +case 240:
  20867. +#line 1326 "parse.y"
  20868.  {
  20869.                    if (TREE_CODE (yyvsp[-1].ttype) == CALL_EXPR
  20870.                        && TREE_TYPE (yyvsp[-1].ttype) != void_type_node)
  20871. @@ -4864,8 +4806,8 @@
  20872.                      yyval.ttype = yyvsp[-1].ttype;
  20873.                  ;
  20874.      break;}
  20875. -case 243:
  20876. -#line 1338 "parse.y"
  20877. +case 241:
  20878. +#line 1334 "parse.y"
  20879.  {
  20880.            yyval.ttype = build_x_function_call (yyval.ttype, NULL_TREE, current_class_decl);
  20881.            if (TREE_CODE (yyval.ttype) == CALL_EXPR
  20882. @@ -4873,12 +4815,12 @@
  20883.              yyval.ttype = require_complete_type (yyval.ttype);
  20884.                  ;
  20885.      break;}
  20886. -case 244:
  20887. -#line 1345 "parse.y"
  20888. +case 242:
  20889. +#line 1341 "parse.y"
  20890.  { yyval.ttype = grok_array_decl (yyval.ttype, yyvsp[-1].ttype); ;
  20891.      break;}
  20892. -case 245:
  20893. -#line 1347 "parse.y"
  20894. +case 243:
  20895. +#line 1343 "parse.y"
  20896.  { /* If we get an OFFSET_REF, turn it into what it really
  20897.               means (e.g., a COMPONENT_REF).  This way if we've got,
  20898.               say, a reference to a static member that's being operated
  20899. @@ -4888,14 +4830,14 @@
  20900.              yyval.ttype = resolve_offset_ref (yyval.ttype);
  20901.            yyval.ttype = build_x_unary_op (POSTINCREMENT_EXPR, yyval.ttype); ;
  20902.      break;}
  20903. -case 246:
  20904. -#line 1356 "parse.y"
  20905. +case 244:
  20906. +#line 1352 "parse.y"
  20907.  { if (TREE_CODE (yyval.ttype) == OFFSET_REF)
  20908.              yyval.ttype = resolve_offset_ref (yyval.ttype);
  20909.            yyval.ttype = build_x_unary_op (POSTDECREMENT_EXPR, yyval.ttype); ;
  20910.      break;}
  20911. -case 247:
  20912. -#line 1361 "parse.y"
  20913. +case 245:
  20914. +#line 1357 "parse.y"
  20915.  { if (current_class_decl)
  20916.              {
  20917.  #ifdef WARNING_ABOUT_CCD
  20918. @@ -4919,8 +4861,8 @@
  20919.              }
  20920.          ;
  20921.      break;}
  20922. -case 248:
  20923. -#line 1384 "parse.y"
  20924. +case 246:
  20925. +#line 1380 "parse.y"
  20926.  {
  20927.            tree type;
  20928.            tree id = yyval.ttype;
  20929. @@ -4965,37 +4907,37 @@
  20930.              }
  20931.          ;
  20932.      break;}
  20933. -case 250:
  20934. -#line 1429 "parse.y"
  20935. +case 248:
  20936. +#line 1425 "parse.y"
  20937.  { tree type = groktypename (yyvsp[-4].ttype);
  20938.            yyval.ttype = build_dynamic_cast (type, yyvsp[-1].ttype); ;
  20939.      break;}
  20940. -case 251:
  20941. -#line 1432 "parse.y"
  20942. +case 249:
  20943. +#line 1428 "parse.y"
  20944.  { tree type = groktypename (yyvsp[-4].ttype);
  20945.            yyval.ttype = build_static_cast (type, yyvsp[-1].ttype); ;
  20946.      break;}
  20947. -case 252:
  20948. -#line 1435 "parse.y"
  20949. +case 250:
  20950. +#line 1431 "parse.y"
  20951.  { tree type = groktypename (yyvsp[-4].ttype);
  20952.            yyval.ttype = build_reinterpret_cast (type, yyvsp[-1].ttype); ;
  20953.      break;}
  20954. -case 253:
  20955. -#line 1438 "parse.y"
  20956. +case 251:
  20957. +#line 1434 "parse.y"
  20958.  { tree type = groktypename (yyvsp[-4].ttype);
  20959.            yyval.ttype = build_const_cast (type, yyvsp[-1].ttype); ;
  20960.      break;}
  20961. -case 254:
  20962. -#line 1441 "parse.y"
  20963. +case 252:
  20964. +#line 1437 "parse.y"
  20965.  { yyval.ttype = build_typeid (yyvsp[-1].ttype); ;
  20966.      break;}
  20967. -case 255:
  20968. -#line 1443 "parse.y"
  20969. +case 253:
  20970. +#line 1439 "parse.y"
  20971.  { tree type = groktypename (yyvsp[-1].ttype);
  20972.            yyval.ttype = get_typeid (type); ;
  20973.      break;}
  20974. -case 256:
  20975. -#line 1446 "parse.y"
  20976. +case 254:
  20977. +#line 1442 "parse.y"
  20978.  {
  20979.          do_scoped_id:
  20980.            yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
  20981. @@ -5035,8 +4977,8 @@
  20982.  
  20983.          ;
  20984.      break;}
  20985. -case 257:
  20986. -#line 1485 "parse.y"
  20987. +case 255:
  20988. +#line 1481 "parse.y"
  20989.  {
  20990.            got_scope = NULL_TREE;
  20991.            if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
  20992. @@ -5044,28 +4986,28 @@
  20993.            yyval.ttype = yyvsp[0].ttype;
  20994.          ;
  20995.      break;}
  20996. +case 256:
  20997. +#line 1488 "parse.y"
  20998. +{ yyval.ttype = build_offset_ref (OP0 (yyval.ttype), OP1 (yyval.ttype)); ;
  20999. +    break;}
  21000. +case 257:
  21001. +#line 1490 "parse.y"
  21002. +{ yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), yyvsp[-1].ttype); ;
  21003. +    break;}
  21004.  case 258:
  21005.  #line 1492 "parse.y"
  21006. -{ yyval.ttype = build_offset_ref (OP0 (yyval.ttype), OP1 (yyval.ttype)); ;
  21007. +{ yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), NULL_TREE); ;
  21008.      break;}
  21009.  case 259:
  21010.  #line 1494 "parse.y"
  21011. -{ yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), yyvsp[-1].ttype); ;
  21012. +{ yyval.ttype = build_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ;
  21013.      break;}
  21014.  case 260:
  21015.  #line 1496 "parse.y"
  21016. -{ yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), NULL_TREE); ;
  21017. +{ yyval.ttype = build_object_ref (yyval.ttype, OP0 (yyvsp[0].ttype), OP1 (yyvsp[0].ttype)); ;
  21018.      break;}
  21019.  case 261:
  21020.  #line 1498 "parse.y"
  21021. -{ yyval.ttype = build_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ;
  21022. -    break;}
  21023. -case 262:
  21024. -#line 1500 "parse.y"
  21025. -{ yyval.ttype = build_object_ref (yyval.ttype, OP0 (yyvsp[0].ttype), OP1 (yyvsp[0].ttype)); ;
  21026. -    break;}
  21027. -case 263:
  21028. -#line 1502 "parse.y"
  21029.  {
  21030.  #if 0
  21031.            /* This is a future direction of this code, but because
  21032. @@ -5081,8 +5023,8 @@
  21033.  #endif
  21034.          ;
  21035.      break;}
  21036. -case 264:
  21037. -#line 1517 "parse.y"
  21038. +case 262:
  21039. +#line 1513 "parse.y"
  21040.  {
  21041.  #if 0
  21042.            /* This is a future direction of this code, but because
  21043. @@ -5098,8 +5040,8 @@
  21044.  #endif
  21045.          ;
  21046.      break;}
  21047. -case 265:
  21048. -#line 1532 "parse.y"
  21049. +case 263:
  21050. +#line 1528 "parse.y"
  21051.  {
  21052.            if (IS_SIGNATURE (IDENTIFIER_TYPE_VALUE (OP0 (yyvsp[-3].ttype))))
  21053.              {
  21054. @@ -5111,8 +5053,8 @@
  21055.              yyval.ttype = build_scoped_method_call (yyval.ttype, OP0 (yyvsp[-3].ttype), OP1 (yyvsp[-3].ttype), yyvsp[-1].ttype);
  21056.          ;
  21057.      break;}
  21058. -case 266:
  21059. -#line 1543 "parse.y"
  21060. +case 264:
  21061. +#line 1539 "parse.y"
  21062.  {
  21063.            if (IS_SIGNATURE (IDENTIFIER_TYPE_VALUE (OP0 (yyvsp[-1].ttype))))
  21064.              {
  21065. @@ -5124,8 +5066,8 @@
  21066.              yyval.ttype = build_scoped_method_call (yyval.ttype, OP0 (yyvsp[-1].ttype), OP1 (yyvsp[-1].ttype), NULL_TREE);
  21067.          ;
  21068.      break;}
  21069. -case 267:
  21070. -#line 1555 "parse.y"
  21071. +case 265:
  21072. +#line 1551 "parse.y"
  21073.  { 
  21074.            if (TREE_CODE (TREE_TYPE (yyvsp[-3].ttype)) 
  21075.                != TREE_CODE (TREE_TYPE (IDENTIFIER_GLOBAL_VALUE (yyvsp[-1].ttype))))
  21076. @@ -5133,8 +5075,8 @@
  21077.            yyval.ttype = convert (void_type_node, yyvsp[-3].ttype);
  21078.          ;
  21079.      break;}
  21080. -case 268:
  21081. -#line 1562 "parse.y"
  21082. +case 266:
  21083. +#line 1558 "parse.y"
  21084.  { 
  21085.            if (yyvsp[-4].ttype != yyvsp[-1].ttype)
  21086.              cp_error ("destructor specifier `%T::~%T()' must have matching names", yyvsp[-4].ttype, yyvsp[-1].ttype);
  21087. @@ -5144,36 +5086,36 @@
  21088.            yyval.ttype = convert (void_type_node, yyvsp[-5].ttype);
  21089.          ;
  21090.      break;}
  21091. -case 269:
  21092. -#line 1611 "parse.y"
  21093. +case 267:
  21094. +#line 1607 "parse.y"
  21095.  { yyval.itype = 0; ;
  21096.      break;}
  21097. -case 270:
  21098. -#line 1613 "parse.y"
  21099. +case 268:
  21100. +#line 1609 "parse.y"
  21101.  { got_scope = NULL_TREE; yyval.itype = 1; ;
  21102.      break;}
  21103. -case 271:
  21104. -#line 1617 "parse.y"
  21105. +case 269:
  21106. +#line 1613 "parse.y"
  21107.  { yyval.itype = 0; ;
  21108.      break;}
  21109. -case 272:
  21110. -#line 1619 "parse.y"
  21111. +case 270:
  21112. +#line 1615 "parse.y"
  21113.  { got_scope = NULL_TREE; yyval.itype = 1; ;
  21114.      break;}
  21115. -case 273:
  21116. -#line 1624 "parse.y"
  21117. +case 271:
  21118. +#line 1620 "parse.y"
  21119.  { yyval.ttype = true_node; ;
  21120.      break;}
  21121. -case 274:
  21122. -#line 1626 "parse.y"
  21123. +case 272:
  21124. +#line 1622 "parse.y"
  21125.  { yyval.ttype = false_node; ;
  21126.      break;}
  21127. -case 276:
  21128. -#line 1633 "parse.y"
  21129. +case 274:
  21130. +#line 1629 "parse.y"
  21131.  { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
  21132.      break;}
  21133. -case 277:
  21134. -#line 1638 "parse.y"
  21135. +case 275:
  21136. +#line 1634 "parse.y"
  21137.  {
  21138.            if (! current_function_parms_stored)
  21139.              store_parm_decls ();
  21140. @@ -5184,14 +5126,14 @@
  21141.            keep_next_level ();
  21142.          ;
  21143.      break;}
  21144. -case 279:
  21145. -#line 1651 "parse.y"
  21146. +case 277:
  21147. +#line 1647 "parse.y"
  21148.  {
  21149.            yyval.ttype = build_x_arrow (yyval.ttype);
  21150.          ;
  21151.      break;}
  21152. -case 280:
  21153. -#line 1659 "parse.y"
  21154. +case 278:
  21155. +#line 1655 "parse.y"
  21156.  { tree d = get_decl_list (yyvsp[-2].ttype);
  21157.            int yes = suspend_momentary ();
  21158.            d = start_decl (yyvsp[-1].ttype, d, 0, NULL_TREE);
  21159. @@ -5201,8 +5143,8 @@
  21160.              note_got_semicolon (yyvsp[-2].ttype);
  21161.          ;
  21162.      break;}
  21163. -case 281:
  21164. -#line 1668 "parse.y"
  21165. +case 279:
  21166. +#line 1664 "parse.y"
  21167.  { tree d = yyvsp[-2].ttype;
  21168.            int yes = suspend_momentary ();
  21169.            d = start_decl (yyvsp[-1].ttype, d, 0, NULL_TREE);
  21170. @@ -5211,164 +5153,164 @@
  21171.            note_list_got_semicolon (yyvsp[-2].ttype);
  21172.          ;
  21173.      break;}
  21174. -case 282:
  21175. -#line 1676 "parse.y"
  21176. +case 280:
  21177. +#line 1672 "parse.y"
  21178.  {
  21179.            resume_momentary (yyvsp[-1].itype);
  21180.            if (IS_AGGR_TYPE_CODE (TREE_CODE (yyvsp[-2].ttype)))
  21181.              note_got_semicolon (yyvsp[-2].ttype);
  21182.          ;
  21183.      break;}
  21184. -case 283:
  21185. -#line 1682 "parse.y"
  21186. +case 281:
  21187. +#line 1678 "parse.y"
  21188.  {
  21189.            resume_momentary (yyvsp[-1].itype);
  21190.            note_list_got_semicolon (yyvsp[-2].ttype);
  21191.          ;
  21192.      break;}
  21193. -case 284:
  21194. -#line 1687 "parse.y"
  21195. +case 282:
  21196. +#line 1683 "parse.y"
  21197.  { resume_momentary (yyvsp[-1].itype); ;
  21198.      break;}
  21199. -case 285:
  21200. -#line 1689 "parse.y"
  21201. +case 283:
  21202. +#line 1685 "parse.y"
  21203.  {
  21204.            shadow_tag (yyvsp[-1].ttype);
  21205.            note_list_got_semicolon (yyvsp[-1].ttype);
  21206.          ;
  21207.      break;}
  21208. -case 286:
  21209. -#line 1694 "parse.y"
  21210. +case 284:
  21211. +#line 1690 "parse.y"
  21212.  { warning ("empty declaration"); ;
  21213.      break;}
  21214. -case 289:
  21215. -#line 1708 "parse.y"
  21216. +case 287:
  21217. +#line 1704 "parse.y"
  21218.  { yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, empty_parms (),
  21219.                       NULL_TREE); ;
  21220.      break;}
  21221. -case 290:
  21222. -#line 1711 "parse.y"
  21223. +case 288:
  21224. +#line 1707 "parse.y"
  21225.  { yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), 
  21226.                       NULL_TREE); ;
  21227.      break;}
  21228. +case 289:
  21229. +#line 1714 "parse.y"
  21230. +{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
  21231. +    break;}
  21232. +case 290:
  21233. +#line 1716 "parse.y"
  21234. +{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
  21235. +    break;}
  21236.  case 291:
  21237.  #line 1718 "parse.y"
  21238. -{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
  21239. +{ yyval.ttype = build_decl_list (get_decl_list (yyval.ttype), yyvsp[0].ttype); ;
  21240.      break;}
  21241.  case 292:
  21242.  #line 1720 "parse.y"
  21243. -{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
  21244. +{ yyval.ttype = build_decl_list (yyval.ttype, NULL_TREE); ;
  21245.      break;}
  21246.  case 293:
  21247.  #line 1722 "parse.y"
  21248. -{ yyval.ttype = build_decl_list (get_decl_list (yyval.ttype), yyvsp[0].ttype); ;
  21249. -    break;}
  21250. -case 294:
  21251. -#line 1724 "parse.y"
  21252.  { yyval.ttype = build_decl_list (yyval.ttype, NULL_TREE); ;
  21253.      break;}
  21254. -case 295:
  21255. -#line 1726 "parse.y"
  21256. -{ yyval.ttype = build_decl_list (yyval.ttype, NULL_TREE); ;
  21257. +case 296:
  21258. +#line 1735 "parse.y"
  21259. +{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
  21260. +    break;}
  21261. +case 297:
  21262. +#line 1737 "parse.y"
  21263. +{ yyval.ttype = decl_tree_cons (NULL_TREE, yyval.ttype, yyvsp[0].ttype); ;
  21264.      break;}
  21265.  case 298:
  21266.  #line 1739 "parse.y"
  21267. -{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
  21268. +{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyval.ttype)); ;
  21269.      break;}
  21270.  case 299:
  21271.  #line 1741 "parse.y"
  21272. -{ yyval.ttype = decl_tree_cons (NULL_TREE, yyval.ttype, yyvsp[0].ttype); ;
  21273. +{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyval.ttype)); ;
  21274.      break;}
  21275.  case 300:
  21276.  #line 1743 "parse.y"
  21277. -{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyval.ttype)); ;
  21278. -    break;}
  21279. -case 301:
  21280. -#line 1745 "parse.y"
  21281. -{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyval.ttype)); ;
  21282. -    break;}
  21283. -case 302:
  21284. -#line 1747 "parse.y"
  21285.  { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-2].ttype, 
  21286.                         chainon (yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyval.ttype))); ;
  21287.      break;}
  21288. -case 303:
  21289. -#line 1753 "parse.y"
  21290. +case 301:
  21291. +#line 1749 "parse.y"
  21292.  { if (extra_warnings)
  21293.              warning ("`%s' is not at beginning of declaration",
  21294.                   IDENTIFIER_POINTER (yyval.ttype));
  21295.            yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
  21296.      break;}
  21297. -case 304:
  21298. -#line 1758 "parse.y"
  21299. +case 302:
  21300. +#line 1754 "parse.y"
  21301.  { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
  21302.      break;}
  21303. -case 305:
  21304. -#line 1760 "parse.y"
  21305. +case 303:
  21306. +#line 1756 "parse.y"
  21307.  { if (extra_warnings)
  21308.              warning ("`%s' is not at beginning of declaration",
  21309.                   IDENTIFIER_POINTER (yyvsp[0].ttype));
  21310.            yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
  21311.      break;}
  21312. -case 306:
  21313. -#line 1772 "parse.y"
  21314. +case 304:
  21315. +#line 1768 "parse.y"
  21316.  { TREE_STATIC (yyval.ttype) = 1; ;
  21317.      break;}
  21318. -case 307:
  21319. -#line 1774 "parse.y"
  21320. +case 305:
  21321. +#line 1770 "parse.y"
  21322.  { yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
  21323.      break;}
  21324. -case 308:
  21325. -#line 1776 "parse.y"
  21326. +case 306:
  21327. +#line 1772 "parse.y"
  21328.  { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype);
  21329.            TREE_STATIC (yyval.ttype) = 1; ;
  21330.      break;}
  21331. -case 309:
  21332. -#line 1779 "parse.y"
  21333. +case 307:
  21334. +#line 1775 "parse.y"
  21335.  { if (extra_warnings && TREE_STATIC (yyval.ttype))
  21336.              warning ("`%s' is not at beginning of declaration",
  21337.                   IDENTIFIER_POINTER (yyvsp[0].ttype));
  21338.            yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype);
  21339.            TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
  21340.      break;}
  21341. -case 310:
  21342. -#line 1795 "parse.y"
  21343. +case 308:
  21344. +#line 1791 "parse.y"
  21345.  { yyval.ttype = get_decl_list (yyval.ttype); ;
  21346.      break;}
  21347. -case 311:
  21348. -#line 1797 "parse.y"
  21349. +case 309:
  21350. +#line 1793 "parse.y"
  21351.  { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
  21352.      break;}
  21353. -case 312:
  21354. -#line 1799 "parse.y"
  21355. +case 310:
  21356. +#line 1795 "parse.y"
  21357.  { yyval.ttype = decl_tree_cons (NULL_TREE, yyval.ttype, yyvsp[0].ttype); ;
  21358.      break;}
  21359. -case 313:
  21360. -#line 1801 "parse.y"
  21361. +case 311:
  21362. +#line 1797 "parse.y"
  21363.  { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyval.ttype)); ;
  21364.      break;}
  21365. -case 314:
  21366. -#line 1806 "parse.y"
  21367. +case 312:
  21368. +#line 1802 "parse.y"
  21369.  { yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
  21370.      break;}
  21371. -case 315:
  21372. -#line 1808 "parse.y"
  21373. +case 313:
  21374. +#line 1804 "parse.y"
  21375.  { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
  21376.      break;}
  21377. -case 319:
  21378. -#line 1819 "parse.y"
  21379. +case 317:
  21380. +#line 1815 "parse.y"
  21381.  { yyval.ttype = TREE_TYPE (yyvsp[-1].ttype);
  21382.            if (flag_ansi)
  21383.              pedwarn ("ANSI C++ forbids `typeof'"); ;
  21384.      break;}
  21385. -case 320:
  21386. -#line 1823 "parse.y"
  21387. +case 318:
  21388. +#line 1819 "parse.y"
  21389.  { yyval.ttype = groktypename (yyvsp[-1].ttype);
  21390.            if (flag_ansi)
  21391.              pedwarn ("ANSI C++ forbids `typeof'"); ;
  21392.      break;}
  21393. -case 321:
  21394. -#line 1827 "parse.y"
  21395. +case 319:
  21396. +#line 1823 "parse.y"
  21397.  { tree type = TREE_TYPE (yyvsp[-1].ttype);
  21398.  
  21399.            if (IS_AGGR_TYPE (type))
  21400. @@ -5383,8 +5325,8 @@
  21401.              }
  21402.          ;
  21403.      break;}
  21404. -case 322:
  21405. -#line 1841 "parse.y"
  21406. +case 320:
  21407. +#line 1837 "parse.y"
  21408.  { tree type = groktypename (yyvsp[-1].ttype);
  21409.  
  21410.            if (IS_AGGR_TYPE (type))
  21411. @@ -5399,16 +5341,16 @@
  21412.              }
  21413.          ;
  21414.      break;}
  21415. -case 332:
  21416. -#line 1880 "parse.y"
  21417. +case 330:
  21418. +#line 1876 "parse.y"
  21419.  { yyval.ttype = NULL_TREE; ;
  21420.      break;}
  21421. -case 333:
  21422. -#line 1882 "parse.y"
  21423. +case 331:
  21424. +#line 1878 "parse.y"
  21425.  { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ;
  21426.      break;}
  21427. -case 334:
  21428. -#line 1887 "parse.y"
  21429. +case 332:
  21430. +#line 1883 "parse.y"
  21431.  { current_declspecs = yyvsp[-5].ttype;
  21432.            if (TREE_CODE (current_declspecs) != TREE_LIST)
  21433.              current_declspecs = get_decl_list (current_declspecs);
  21434. @@ -5423,13 +5365,13 @@
  21435.            yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
  21436.            cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype); ;
  21437.      break;}
  21438. -case 335:
  21439. -#line 1902 "parse.y"
  21440. +case 333:
  21441. +#line 1898 "parse.y"
  21442.  { finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0);
  21443.            yyval.itype = yyvsp[-2].itype; ;
  21444.      break;}
  21445. -case 336:
  21446. -#line 1905 "parse.y"
  21447. +case 334:
  21448. +#line 1901 "parse.y"
  21449.  { tree d;
  21450.            current_declspecs = yyvsp[-4].ttype;
  21451.            if (TREE_CODE (current_declspecs) != TREE_LIST)
  21452. @@ -5446,35 +5388,35 @@
  21453.            cplus_decl_attributes (d, yyvsp[0].ttype);
  21454.            finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 0); ;
  21455.      break;}
  21456. -case 337:
  21457. -#line 1924 "parse.y"
  21458. +case 335:
  21459. +#line 1920 "parse.y"
  21460.  { yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
  21461.            cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype); ;
  21462.      break;}
  21463. -case 338:
  21464. -#line 1928 "parse.y"
  21465. +case 336:
  21466. +#line 1924 "parse.y"
  21467.  { finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0); ;
  21468.      break;}
  21469. -case 339:
  21470. -#line 1930 "parse.y"
  21471. +case 337:
  21472. +#line 1926 "parse.y"
  21473.  { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
  21474.            cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype);
  21475.            finish_decl (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, 0); ;
  21476.      break;}
  21477. -case 340:
  21478. -#line 1937 "parse.y"
  21479. +case 338:
  21480. +#line 1933 "parse.y"
  21481.  { current_declspecs = yyvsp[-5].ttype;
  21482.            yyvsp[0].itype = suspend_momentary ();
  21483.            yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
  21484.            cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype); ;
  21485.      break;}
  21486. -case 341:
  21487. -#line 1943 "parse.y"
  21488. +case 339:
  21489. +#line 1939 "parse.y"
  21490.  { finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0);
  21491.            yyval.itype = yyvsp[-2].itype; ;
  21492.      break;}
  21493. -case 342:
  21494. -#line 1946 "parse.y"
  21495. +case 340:
  21496. +#line 1942 "parse.y"
  21497.  { tree d;
  21498.            current_declspecs = yyvsp[-4].ttype;
  21499.            yyval.itype = suspend_momentary ();
  21500. @@ -5482,20 +5424,20 @@
  21501.            cplus_decl_attributes (d, yyvsp[0].ttype);
  21502.            finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 0); ;
  21503.      break;}
  21504. -case 343:
  21505. -#line 1956 "parse.y"
  21506. +case 341:
  21507. +#line 1952 "parse.y"
  21508.  { current_declspecs = NULL_TREE;
  21509.            yyvsp[0].itype = suspend_momentary ();
  21510.            yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
  21511.            cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype); ;
  21512.      break;}
  21513. -case 344:
  21514. -#line 1962 "parse.y"
  21515. +case 342:
  21516. +#line 1958 "parse.y"
  21517.  { finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0);
  21518.            yyval.itype = yyvsp[-2].itype; ;
  21519.      break;}
  21520. -case 345:
  21521. -#line 1965 "parse.y"
  21522. +case 343:
  21523. +#line 1961 "parse.y"
  21524.  { tree d;
  21525.            current_declspecs = NULL_TREE;
  21526.            yyval.itype = suspend_momentary ();
  21527. @@ -5503,147 +5445,147 @@
  21528.            cplus_decl_attributes (d, yyvsp[0].ttype);
  21529.            finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 0); ;
  21530.      break;}
  21531. -case 346:
  21532. -#line 1977 "parse.y"
  21533. +case 344:
  21534. +#line 1973 "parse.y"
  21535.  { yyval.ttype = NULL_TREE; ;
  21536.      break;}
  21537. -case 347:
  21538. -#line 1979 "parse.y"
  21539. +case 345:
  21540. +#line 1975 "parse.y"
  21541.  { yyval.ttype = yyvsp[0].ttype; ;
  21542.      break;}
  21543. -case 348:
  21544. -#line 1984 "parse.y"
  21545. +case 346:
  21546. +#line 1980 "parse.y"
  21547.  { yyval.ttype = yyvsp[0].ttype; ;
  21548.      break;}
  21549. -case 349:
  21550. -#line 1986 "parse.y"
  21551. +case 347:
  21552. +#line 1982 "parse.y"
  21553.  { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  21554.      break;}
  21555. -case 350:
  21556. -#line 1991 "parse.y"
  21557. +case 348:
  21558. +#line 1987 "parse.y"
  21559.  { yyval.ttype = yyvsp[-2].ttype; ;
  21560.      break;}
  21561. -case 351:
  21562. -#line 1996 "parse.y"
  21563. +case 349:
  21564. +#line 1992 "parse.y"
  21565.  { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
  21566.      break;}
  21567. -case 352:
  21568. -#line 1998 "parse.y"
  21569. +case 350:
  21570. +#line 1994 "parse.y"
  21571.  { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
  21572.      break;}
  21573. -case 353:
  21574. -#line 2003 "parse.y"
  21575. +case 351:
  21576. +#line 1999 "parse.y"
  21577.  { yyval.ttype = NULL_TREE; ;
  21578.      break;}
  21579. -case 354:
  21580. -#line 2005 "parse.y"
  21581. +case 352:
  21582. +#line 2001 "parse.y"
  21583.  { yyval.ttype = yyvsp[0].ttype; ;
  21584.      break;}
  21585. -case 355:
  21586. -#line 2007 "parse.y"
  21587. +case 353:
  21588. +#line 2003 "parse.y"
  21589.  { yyval.ttype = tree_cons (yyvsp[-3].ttype, NULL_TREE, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
  21590.      break;}
  21591. -case 356:
  21592. -#line 2009 "parse.y"
  21593. +case 354:
  21594. +#line 2005 "parse.y"
  21595.  { yyval.ttype = tree_cons (yyvsp[-5].ttype, NULL_TREE, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
  21596.      break;}
  21597. -case 357:
  21598. -#line 2011 "parse.y"
  21599. +case 355:
  21600. +#line 2007 "parse.y"
  21601.  { yyval.ttype = tree_cons (yyvsp[-3].ttype, NULL_TREE, yyvsp[-1].ttype); ;
  21602.      break;}
  21603. -case 362:
  21604. -#line 2027 "parse.y"
  21605. +case 360:
  21606. +#line 2023 "parse.y"
  21607.  { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
  21608.      break;}
  21609. -case 363:
  21610. -#line 2029 "parse.y"
  21611. +case 361:
  21612. +#line 2025 "parse.y"
  21613.  { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
  21614.      break;}
  21615. -case 365:
  21616. -#line 2035 "parse.y"
  21617. +case 363:
  21618. +#line 2031 "parse.y"
  21619.  { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE);
  21620.            TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
  21621.      break;}
  21622. -case 366:
  21623. -#line 2038 "parse.y"
  21624. +case 364:
  21625. +#line 2034 "parse.y"
  21626.  { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype));
  21627.            TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
  21628.      break;}
  21629. -case 367:
  21630. -#line 2041 "parse.y"
  21631. +case 365:
  21632. +#line 2037 "parse.y"
  21633.  { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
  21634.            TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
  21635.      break;}
  21636. -case 368:
  21637. -#line 2044 "parse.y"
  21638. +case 366:
  21639. +#line 2040 "parse.y"
  21640.  { yyval.ttype = NULL_TREE; ;
  21641.      break;}
  21642. -case 369:
  21643. -#line 2051 "parse.y"
  21644. +case 367:
  21645. +#line 2047 "parse.y"
  21646.  { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
  21647.      break;}
  21648. -case 370:
  21649. -#line 2053 "parse.y"
  21650. +case 368:
  21651. +#line 2049 "parse.y"
  21652.  { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
  21653.      break;}
  21654. -case 371:
  21655. -#line 2056 "parse.y"
  21656. +case 369:
  21657. +#line 2052 "parse.y"
  21658.  { yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;
  21659.      break;}
  21660. -case 372:
  21661. -#line 2058 "parse.y"
  21662. +case 370:
  21663. +#line 2054 "parse.y"
  21664.  { yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
  21665.      break;}
  21666. -case 373:
  21667. -#line 2060 "parse.y"
  21668. +case 371:
  21669. +#line 2056 "parse.y"
  21670.  { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
  21671.      break;}
  21672. -case 374:
  21673. -#line 2062 "parse.y"
  21674. +case 372:
  21675. +#line 2058 "parse.y"
  21676.  { yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
  21677.      break;}
  21678. -case 375:
  21679. -#line 2067 "parse.y"
  21680. +case 373:
  21681. +#line 2063 "parse.y"
  21682.  { yyvsp[0].itype = suspend_momentary ();
  21683.            yyval.ttype = start_enum (yyvsp[-1].ttype); ;
  21684.      break;}
  21685. -case 376:
  21686. -#line 2070 "parse.y"
  21687. +case 374:
  21688. +#line 2066 "parse.y"
  21689.  { yyval.ttype = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
  21690.            resume_momentary ((int) yyvsp[-4].itype);
  21691.            check_for_missing_semicolon (yyvsp[-3].ttype); ;
  21692.      break;}
  21693. -case 377:
  21694. -#line 2074 "parse.y"
  21695. +case 375:
  21696. +#line 2070 "parse.y"
  21697.  { yyval.ttype = finish_enum (start_enum (yyvsp[-2].ttype), NULL_TREE);
  21698.            check_for_missing_semicolon (yyval.ttype); ;
  21699.      break;}
  21700. -case 378:
  21701. -#line 2077 "parse.y"
  21702. +case 376:
  21703. +#line 2073 "parse.y"
  21704.  { yyvsp[0].itype = suspend_momentary ();
  21705.            yyval.ttype = start_enum (make_anon_name ()); ;
  21706.      break;}
  21707. -case 379:
  21708. -#line 2080 "parse.y"
  21709. +case 377:
  21710. +#line 2076 "parse.y"
  21711.  { yyval.ttype = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
  21712.            resume_momentary ((int) yyvsp[-5].itype);
  21713.            check_for_missing_semicolon (yyvsp[-3].ttype); ;
  21714.      break;}
  21715. -case 380:
  21716. -#line 2084 "parse.y"
  21717. +case 378:
  21718. +#line 2080 "parse.y"
  21719.  { yyval.ttype = finish_enum (start_enum (make_anon_name()), NULL_TREE);
  21720.            check_for_missing_semicolon (yyval.ttype); ;
  21721.      break;}
  21722. -case 381:
  21723. -#line 2087 "parse.y"
  21724. +case 379:
  21725. +#line 2083 "parse.y"
  21726.  { yyval.ttype = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE, 0); ;
  21727.      break;}
  21728. -case 382:
  21729. -#line 2089 "parse.y"
  21730. +case 380:
  21731. +#line 2085 "parse.y"
  21732.  { yyval.ttype = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE, 0); ;
  21733.      break;}
  21734. -case 383:
  21735. -#line 2093 "parse.y"
  21736. +case 381:
  21737. +#line 2089 "parse.y"
  21738.  {
  21739.            int semi;
  21740.            tree id;
  21741. @@ -5695,8 +5637,8 @@
  21742.            if (! semi)
  21743.              check_for_missing_semicolon (yyval.ttype); ;
  21744.      break;}
  21745. -case 384:
  21746. -#line 2144 "parse.y"
  21747. +case 382:
  21748. +#line 2140 "parse.y"
  21749.  {
  21750.  #if 0
  21751.    /* It's no longer clear what the following error is supposed to
  21752. @@ -5710,72 +5652,72 @@
  21753.  #endif
  21754.          ;
  21755.      break;}
  21756. -case 388:
  21757. -#line 2166 "parse.y"
  21758. +case 386:
  21759. +#line 2162 "parse.y"
  21760.  { if (pedantic) pedwarn ("comma at end of enumerator list"); ;
  21761.      break;}
  21762. -case 390:
  21763. -#line 2171 "parse.y"
  21764. +case 388:
  21765. +#line 2167 "parse.y"
  21766.  { error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
  21767.      break;}
  21768. -case 391:
  21769. -#line 2173 "parse.y"
  21770. +case 389:
  21771. +#line 2169 "parse.y"
  21772.  { error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
  21773.      break;}
  21774. -case 392:
  21775. -#line 2175 "parse.y"
  21776. +case 390:
  21777. +#line 2171 "parse.y"
  21778.  { error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
  21779.      break;}
  21780. -case 393:
  21781. -#line 2177 "parse.y"
  21782. +case 391:
  21783. +#line 2173 "parse.y"
  21784.  { error ("no body nor ';' separates two class, struct or union declarations"); ;
  21785.      break;}
  21786. -case 394:
  21787. -#line 2182 "parse.y"
  21788. +case 392:
  21789. +#line 2178 "parse.y"
  21790.  { 
  21791.            yyungetc (';', 1); current_aggr = yyval.ttype; yyval.ttype = yyvsp[-1].ttype; 
  21792.            if (yyvsp[-3].ttype == ridpointers[(int) RID_TEMPLATE])
  21793.              instantiate_class_template (yyval.ttype, 2);
  21794.          ;
  21795.      break;}
  21796. -case 395:
  21797. -#line 2191 "parse.y"
  21798. +case 393:
  21799. +#line 2187 "parse.y"
  21800.  { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
  21801.      break;}
  21802. -case 396:
  21803. -#line 2193 "parse.y"
  21804. +case 394:
  21805. +#line 2189 "parse.y"
  21806.  { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
  21807.      break;}
  21808. -case 397:
  21809. -#line 2195 "parse.y"
  21810. +case 395:
  21811. +#line 2191 "parse.y"
  21812.  { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
  21813.      break;}
  21814. -case 398:
  21815. -#line 2197 "parse.y"
  21816. +case 396:
  21817. +#line 2193 "parse.y"
  21818.  { yyungetc ('{', 1);
  21819.          aggr2:
  21820.            current_aggr = yyval.ttype;
  21821.            yyval.ttype = yyvsp[-1].ttype;
  21822.            overload_template_name (yyval.ttype, 0); ;
  21823.      break;}
  21824. -case 399:
  21825. -#line 2203 "parse.y"
  21826. +case 397:
  21827. +#line 2199 "parse.y"
  21828.  { yyungetc (':', 1); goto aggr2; ;
  21829.      break;}
  21830. -case 401:
  21831. -#line 2209 "parse.y"
  21832. +case 399:
  21833. +#line 2205 "parse.y"
  21834.  { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
  21835.      break;}
  21836. -case 402:
  21837. -#line 2213 "parse.y"
  21838. +case 400:
  21839. +#line 2209 "parse.y"
  21840.  { yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, NULL_TREE, 1); ;
  21841.      break;}
  21842. -case 403:
  21843. -#line 2216 "parse.y"
  21844. +case 401:
  21845. +#line 2212 "parse.y"
  21846.  { yyval.ttype = xref_defn_tag (current_aggr, yyvsp[0].ttype, NULL_TREE); ;
  21847.      break;}
  21848. -case 404:
  21849. -#line 2221 "parse.y"
  21850. +case 402:
  21851. +#line 2217 "parse.y"
  21852.  {
  21853.            if (yyvsp[0].ttype)
  21854.              yyval.ttype = xref_tag (current_aggr, yyvsp[-2].ttype, yyvsp[0].ttype, 1);
  21855. @@ -5783,8 +5725,8 @@
  21856.              yyval.ttype = yyvsp[-1].ttype;
  21857.          ;
  21858.      break;}
  21859. -case 405:
  21860. -#line 2230 "parse.y"
  21861. +case 403:
  21862. +#line 2226 "parse.y"
  21863.  {
  21864.            if (yyvsp[0].ttype)
  21865.              yyval.ttype = xref_defn_tag (current_aggr, yyvsp[-2].ttype, yyvsp[0].ttype);
  21866. @@ -5792,29 +5734,29 @@
  21867.              yyval.ttype = yyvsp[-1].ttype;
  21868.          ;
  21869.      break;}
  21870. -case 406:
  21871. -#line 2239 "parse.y"
  21872. +case 404:
  21873. +#line 2235 "parse.y"
  21874.  { yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), NULL_TREE, 0);
  21875.            yyungetc ('{', 1); ;
  21876.      break;}
  21877. -case 409:
  21878. -#line 2247 "parse.y"
  21879. +case 407:
  21880. +#line 2243 "parse.y"
  21881.  { yyval.ttype = NULL_TREE; ;
  21882.      break;}
  21883. -case 410:
  21884. -#line 2249 "parse.y"
  21885. +case 408:
  21886. +#line 2245 "parse.y"
  21887.  { yyungetc(':', 1); yyval.ttype = NULL_TREE; ;
  21888.      break;}
  21889. -case 411:
  21890. -#line 2251 "parse.y"
  21891. +case 409:
  21892. +#line 2247 "parse.y"
  21893.  { yyval.ttype = yyvsp[0].ttype; ;
  21894.      break;}
  21895. -case 413:
  21896. -#line 2257 "parse.y"
  21897. +case 411:
  21898. +#line 2253 "parse.y"
  21899.  { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
  21900.      break;}
  21901. -case 414:
  21902. -#line 2262 "parse.y"
  21903. +case 412:
  21904. +#line 2258 "parse.y"
  21905.  {
  21906.            tree type;
  21907.           do_base_class1:
  21908. @@ -5842,8 +5784,8 @@
  21909.              yyval.ttype = build_tree_list ((tree)access_default, yyval.ttype);
  21910.          ;
  21911.      break;}
  21912. -case 415:
  21913. -#line 2289 "parse.y"
  21914. +case 413:
  21915. +#line 2285 "parse.y"
  21916.  {
  21917.            tree type;
  21918.           do_base_class2:
  21919. @@ -5873,8 +5815,8 @@
  21920.              yyval.ttype = build_tree_list ((tree) yyval.ttype, yyvsp[0].ttype);
  21921.          ;
  21922.      break;}
  21923. -case 417:
  21924. -#line 2322 "parse.y"
  21925. +case 415:
  21926. +#line 2318 "parse.y"
  21927.  {
  21928.            if (current_aggr == signature_type_node)
  21929.              {
  21930. @@ -5897,8 +5839,8 @@
  21931.              }
  21932.          ;
  21933.      break;}
  21934. -case 418:
  21935. -#line 2344 "parse.y"
  21936. +case 416:
  21937. +#line 2340 "parse.y"
  21938.  {
  21939.            if (current_aggr == signature_type_node)
  21940.              {
  21941. @@ -5921,14 +5863,14 @@
  21942.              }
  21943.          ;
  21944.      break;}
  21945. -case 420:
  21946. -#line 2370 "parse.y"
  21947. +case 418:
  21948. +#line 2366 "parse.y"
  21949.  { if (yyval.ttype != ridpointers[(int)RID_VIRTUAL])
  21950.              sorry ("non-virtual access");
  21951.            yyval.itype = access_default_virtual; ;
  21952.      break;}
  21953. -case 421:
  21954. -#line 2374 "parse.y"
  21955. +case 419:
  21956. +#line 2370 "parse.y"
  21957.  { int err = 0;
  21958.            if (yyvsp[0].itype == access_protected)
  21959.              {
  21960. @@ -5955,8 +5897,8 @@
  21961.              }
  21962.          ;
  21963.      break;}
  21964. -case 422:
  21965. -#line 2400 "parse.y"
  21966. +case 420:
  21967. +#line 2396 "parse.y"
  21968.  { if (yyvsp[0].ttype != ridpointers[(int)RID_VIRTUAL])
  21969.              sorry ("non-virtual access");
  21970.            if (yyval.itype == access_public)
  21971. @@ -5964,8 +5906,8 @@
  21972.            else if (yyval.itype == access_private)
  21973.              yyval.itype = access_private_virtual; ;
  21974.      break;}
  21975. -case 423:
  21976. -#line 2409 "parse.y"
  21977. +case 421:
  21978. +#line 2405 "parse.y"
  21979.  { tree t = yyvsp[-1].ttype;
  21980.            push_obstacks_nochange ();
  21981.            end_temporary_allocation ();
  21982. @@ -6026,12 +5968,12 @@
  21983.  #endif
  21984.          ;
  21985.      break;}
  21986. -case 424:
  21987. -#line 2472 "parse.y"
  21988. +case 422:
  21989. +#line 2468 "parse.y"
  21990.  { yyval.ttype = NULL_TREE; ;
  21991.      break;}
  21992. -case 425:
  21993. -#line 2474 "parse.y"
  21994. +case 423:
  21995. +#line 2470 "parse.y"
  21996.  {
  21997.            if (current_aggr == signature_type_node)
  21998.              yyval.ttype = build_tree_list ((tree) access_public, yyval.ttype);
  21999. @@ -6039,8 +5981,8 @@
  22000.              yyval.ttype = build_tree_list ((tree) access_default, yyval.ttype);
  22001.          ;
  22002.      break;}
  22003. -case 426:
  22004. -#line 2481 "parse.y"
  22005. +case 424:
  22006. +#line 2477 "parse.y"
  22007.  {
  22008.            tree visspec = (tree) yyvsp[-2].itype;
  22009.  
  22010. @@ -6052,20 +5994,20 @@
  22011.            yyval.ttype = chainon (yyval.ttype, build_tree_list (visspec, yyvsp[0].ttype));
  22012.          ;
  22013.      break;}
  22014. -case 427:
  22015. -#line 2492 "parse.y"
  22016. +case 425:
  22017. +#line 2488 "parse.y"
  22018.  {
  22019.            if (current_aggr == signature_type_node)
  22020.              error ("access specifier not allowed in signature");
  22021.          ;
  22022.      break;}
  22023. -case 428:
  22024. -#line 2502 "parse.y"
  22025. +case 426:
  22026. +#line 2498 "parse.y"
  22027.  { if (yyval.ttype == void_type_node) yyval.ttype = NULL_TREE; 
  22028.          ;
  22029.      break;}
  22030. -case 429:
  22031. -#line 2505 "parse.y"
  22032. +case 427:
  22033. +#line 2501 "parse.y"
  22034.  { /* In pushdecl, we created a reverse list of names
  22035.               in this binding level.  Make sure that the chain
  22036.               of what we're trying to add isn't the item itself
  22037. @@ -6079,64 +6021,64 @@
  22038.              }
  22039.          ;
  22040.      break;}
  22041. -case 432:
  22042. -#line 2523 "parse.y"
  22043. +case 430:
  22044. +#line 2519 "parse.y"
  22045.  { error ("missing ';' before right brace");
  22046.            yyungetc ('}', 0); ;
  22047.      break;}
  22048. -case 433:
  22049. -#line 2528 "parse.y"
  22050. +case 431:
  22051. +#line 2524 "parse.y"
  22052.  { yyval.ttype = finish_method (yyval.ttype); ;
  22053.      break;}
  22054. -case 434:
  22055. -#line 2530 "parse.y"
  22056. +case 432:
  22057. +#line 2526 "parse.y"
  22058.  { yyval.ttype = finish_method (yyval.ttype); ;
  22059.      break;}
  22060. -case 435:
  22061. -#line 2538 "parse.y"
  22062. +case 433:
  22063. +#line 2534 "parse.y"
  22064.  {
  22065.            yyval.ttype = grok_x_components (yyval.ttype, yyvsp[0].ttype);
  22066.          ;
  22067.      break;}
  22068. -case 436:
  22069. -#line 2542 "parse.y"
  22070. +case 434:
  22071. +#line 2538 "parse.y"
  22072.  { 
  22073.            yyval.ttype = grok_x_components (yyval.ttype, yyvsp[0].ttype);
  22074.          ;
  22075.      break;}
  22076. -case 437:
  22077. -#line 2546 "parse.y"
  22078. +case 435:
  22079. +#line 2542 "parse.y"
  22080.  { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
  22081.            cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
  22082.      break;}
  22083. -case 438:
  22084. -#line 2549 "parse.y"
  22085. +case 436:
  22086. +#line 2545 "parse.y"
  22087.  { yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
  22088.      break;}
  22089. -case 439:
  22090. -#line 2551 "parse.y"
  22091. +case 437:
  22092. +#line 2547 "parse.y"
  22093.  { yyval.ttype = NULL_TREE; ;
  22094.      break;}
  22095. -case 440:
  22096. -#line 2562 "parse.y"
  22097. +case 438:
  22098. +#line 2558 "parse.y"
  22099.  { yyval.ttype = build_parse_node (CALL_EXPR, TREE_VALUE (yyvsp[-4].ttype),
  22100.                       yyvsp[-2].ttype, yyvsp[0].ttype);
  22101.            yyval.ttype = grokfield (yyval.ttype, TREE_CHAIN (yyvsp[-4].ttype), NULL_TREE, NULL_TREE,
  22102.                    NULL_TREE); ;
  22103.      break;}
  22104. -case 441:
  22105. -#line 2567 "parse.y"
  22106. +case 439:
  22107. +#line 2563 "parse.y"
  22108.  { yyval.ttype = build_parse_node (CALL_EXPR, TREE_VALUE (yyvsp[-2].ttype),
  22109.                       empty_parms (), yyvsp[0].ttype);
  22110.            yyval.ttype = grokfield (yyval.ttype, TREE_CHAIN (yyvsp[-2].ttype), NULL_TREE, NULL_TREE,
  22111.                    NULL_TREE); ;
  22112.      break;}
  22113. -case 442:
  22114. -#line 2576 "parse.y"
  22115. +case 440:
  22116. +#line 2572 "parse.y"
  22117.  { yyval.ttype = NULL_TREE; ;
  22118.      break;}
  22119. -case 444:
  22120. -#line 2579 "parse.y"
  22121. +case 442:
  22122. +#line 2575 "parse.y"
  22123.  {
  22124.            /* In this context, void_type_node encodes
  22125.               friends.  They have been recorded elsewhere.  */
  22126. @@ -6146,12 +6088,12 @@
  22127.              yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype);
  22128.          ;
  22129.      break;}
  22130. -case 445:
  22131. -#line 2591 "parse.y"
  22132. +case 443:
  22133. +#line 2587 "parse.y"
  22134.  { yyval.ttype = NULL_TREE; ;
  22135.      break;}
  22136. -case 447:
  22137. -#line 2594 "parse.y"
  22138. +case 445:
  22139. +#line 2590 "parse.y"
  22140.  {
  22141.            /* In this context, void_type_node encodes
  22142.               friends.  They have been recorded elsewhere.  */
  22143. @@ -6161,105 +6103,105 @@
  22144.              yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype);
  22145.          ;
  22146.      break;}
  22147. -case 452:
  22148. -#line 2616 "parse.y"
  22149. +case 450:
  22150. +#line 2612 "parse.y"
  22151.  { current_declspecs = yyvsp[-4].ttype;
  22152.            yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
  22153.            cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
  22154.      break;}
  22155. -case 453:
  22156. -#line 2620 "parse.y"
  22157. +case 451:
  22158. +#line 2616 "parse.y"
  22159.  { current_declspecs = yyvsp[-6].ttype;
  22160.            yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-4].ttype, yyvsp[0].ttype, yyvsp[-3].ttype);
  22161.            cplus_decl_attributes (yyval.ttype, yyvsp[-2].ttype); ;
  22162.      break;}
  22163. -case 454:
  22164. -#line 2624 "parse.y"
  22165. +case 452:
  22166. +#line 2620 "parse.y"
  22167.  { current_declspecs = yyvsp[-4].ttype;
  22168.            yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
  22169.            cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
  22170.      break;}
  22171. -case 455:
  22172. -#line 2631 "parse.y"
  22173. +case 453:
  22174. +#line 2627 "parse.y"
  22175.  { current_declspecs = yyvsp[-4].ttype;
  22176.            yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
  22177.            cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
  22178.      break;}
  22179. -case 456:
  22180. -#line 2635 "parse.y"
  22181. +case 454:
  22182. +#line 2631 "parse.y"
  22183.  { current_declspecs = yyvsp[-6].ttype;
  22184.            yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-4].ttype, yyvsp[0].ttype, yyvsp[-3].ttype);
  22185.            cplus_decl_attributes (yyval.ttype, yyvsp[-2].ttype); ;
  22186.      break;}
  22187. -case 457:
  22188. -#line 2639 "parse.y"
  22189. +case 455:
  22190. +#line 2635 "parse.y"
  22191.  { current_declspecs = yyvsp[-4].ttype;
  22192.            yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
  22193.            cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
  22194.      break;}
  22195. -case 458:
  22196. -#line 2643 "parse.y"
  22197. +case 456:
  22198. +#line 2639 "parse.y"
  22199.  { current_declspecs = yyvsp[-3].ttype;
  22200.            yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
  22201.            cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
  22202.      break;}
  22203. -case 459:
  22204. -#line 2650 "parse.y"
  22205. +case 457:
  22206. +#line 2646 "parse.y"
  22207.  { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
  22208.            cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
  22209.      break;}
  22210. -case 460:
  22211. -#line 2653 "parse.y"
  22212. +case 458:
  22213. +#line 2649 "parse.y"
  22214.  { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-4].ttype, yyvsp[0].ttype, yyvsp[-3].ttype);
  22215.            cplus_decl_attributes (yyval.ttype, yyvsp[-2].ttype); ;
  22216.      break;}
  22217. -case 461:
  22218. -#line 2656 "parse.y"
  22219. +case 459:
  22220. +#line 2652 "parse.y"
  22221.  { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
  22222.            cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
  22223.      break;}
  22224. -case 462:
  22225. -#line 2662 "parse.y"
  22226. +case 460:
  22227. +#line 2658 "parse.y"
  22228.  { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
  22229.            cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
  22230.      break;}
  22231. -case 463:
  22232. -#line 2665 "parse.y"
  22233. +case 461:
  22234. +#line 2661 "parse.y"
  22235.  { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-4].ttype, yyvsp[0].ttype, yyvsp[-3].ttype);
  22236.            cplus_decl_attributes (yyval.ttype, yyvsp[-2].ttype); ;
  22237.      break;}
  22238. -case 464:
  22239. -#line 2668 "parse.y"
  22240. +case 462:
  22241. +#line 2664 "parse.y"
  22242.  { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
  22243.            cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
  22244.      break;}
  22245. -case 465:
  22246. -#line 2671 "parse.y"
  22247. +case 463:
  22248. +#line 2667 "parse.y"
  22249.  { yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
  22250.            cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
  22251.      break;}
  22252. -case 467:
  22253. -#line 2682 "parse.y"
  22254. +case 465:
  22255. +#line 2678 "parse.y"
  22256.  { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
  22257.      break;}
  22258. -case 468:
  22259. -#line 2687 "parse.y"
  22260. +case 466:
  22261. +#line 2683 "parse.y"
  22262.  { yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE); ;
  22263.      break;}
  22264. -case 469:
  22265. -#line 2689 "parse.y"
  22266. +case 467:
  22267. +#line 2685 "parse.y"
  22268.  { yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype); ;
  22269.      break;}
  22270. -case 470:
  22271. -#line 2695 "parse.y"
  22272. +case 468:
  22273. +#line 2691 "parse.y"
  22274.  { yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
  22275.      break;}
  22276. -case 471:
  22277. -#line 2697 "parse.y"
  22278. +case 469:
  22279. +#line 2693 "parse.y"
  22280.  { yyval.ttype = build_decl_list (yyval.ttype, NULL_TREE); ;
  22281.      break;}
  22282. -case 472:
  22283. -#line 2701 "parse.y"
  22284. +case 470:
  22285. +#line 2697 "parse.y"
  22286.  {
  22287.            if (flag_ansi)
  22288.              pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new");
  22289. @@ -6267,54 +6209,54 @@
  22290.            yyval.ttype = build_decl_list (TREE_PURPOSE (yyvsp[-4].ttype), yyval.ttype);
  22291.          ;
  22292.      break;}
  22293. -case 473:
  22294. -#line 2711 "parse.y"
  22295. +case 471:
  22296. +#line 2707 "parse.y"
  22297.  { yyval.ttype = NULL_TREE; ;
  22298.      break;}
  22299. +case 472:
  22300. +#line 2709 "parse.y"
  22301. +{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
  22302. +    break;}
  22303. +case 473:
  22304. +#line 2714 "parse.y"
  22305. +{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
  22306. +    break;}
  22307.  case 474:
  22308. -#line 2713 "parse.y"
  22309. +#line 2716 "parse.y"
  22310.  { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
  22311.      break;}
  22312.  case 475:
  22313. -#line 2718 "parse.y"
  22314. -{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
  22315. +#line 2724 "parse.y"
  22316. +{ yyval.itype = suspend_momentary (); ;
  22317.      break;}
  22318.  case 476:
  22319. -#line 2720 "parse.y"
  22320. -{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
  22321. +#line 2725 "parse.y"
  22322. +{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ;
  22323.      break;}
  22324.  case 477:
  22325. -#line 2728 "parse.y"
  22326. -{ yyval.itype = suspend_momentary (); ;
  22327. +#line 2732 "parse.y"
  22328. +{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22329.      break;}
  22330.  case 478:
  22331. -#line 2729 "parse.y"
  22332. -{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ;
  22333. +#line 2734 "parse.y"
  22334. +{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22335.      break;}
  22336.  case 479:
  22337.  #line 2736 "parse.y"
  22338. -{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22339. +{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
  22340.      break;}
  22341.  case 480:
  22342.  #line 2738 "parse.y"
  22343. -{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22344. +{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
  22345.      break;}
  22346.  case 481:
  22347.  #line 2740 "parse.y"
  22348. -{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
  22349. -    break;}
  22350. -case 482:
  22351. -#line 2742 "parse.y"
  22352. -{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
  22353. -    break;}
  22354. -case 483:
  22355. -#line 2744 "parse.y"
  22356.  { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
  22357.            yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
  22358.          ;
  22359.      break;}
  22360. -case 485:
  22361. -#line 2752 "parse.y"
  22362. +case 483:
  22363. +#line 2748 "parse.y"
  22364.  {
  22365.            /* Remember that this name has been used in the class
  22366.               definition, as per [class.scope0] */
  22367. @@ -6328,277 +6270,285 @@
  22368.              }
  22369.          ;
  22370.      break;}
  22371. -case 487:
  22372. -#line 2769 "parse.y"
  22373. +case 485:
  22374. +#line 2765 "parse.y"
  22375.  { yyval.ttype = yyvsp[0].ttype; ;
  22376.      break;}
  22377. +case 486:
  22378. +#line 2770 "parse.y"
  22379. +{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
  22380. +    break;}
  22381. +case 487:
  22382. +#line 2772 "parse.y"
  22383. +{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
  22384. +    break;}
  22385.  case 488:
  22386.  #line 2774 "parse.y"
  22387. -{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
  22388. +{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
  22389.      break;}
  22390.  case 489:
  22391.  #line 2776 "parse.y"
  22392. -{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
  22393. +{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, NULL_TREE, NULL_TREE); ;
  22394.      break;}
  22395.  case 490:
  22396.  #line 2778 "parse.y"
  22397. -{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
  22398. +{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
  22399.      break;}
  22400.  case 491:
  22401.  #line 2780 "parse.y"
  22402. -{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, NULL_TREE, NULL_TREE); ;
  22403. +{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
  22404.      break;}
  22405.  case 492:
  22406.  #line 2782 "parse.y"
  22407. -{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
  22408. +{ yyval.ttype = yyvsp[-1].ttype; ;
  22409.      break;}
  22410.  case 493:
  22411.  #line 2784 "parse.y"
  22412. -{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
  22413. -    break;}
  22414. -case 494:
  22415. -#line 2786 "parse.y"
  22416. -{ yyval.ttype = yyvsp[-1].ttype; ;
  22417. -    break;}
  22418. -case 495:
  22419. -#line 2788 "parse.y"
  22420.  { push_nested_class (TREE_TYPE (yyval.ttype), 3);
  22421.            yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype);
  22422.            TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ;
  22423.      break;}
  22424. -case 497:
  22425. -#line 2799 "parse.y"
  22426. +case 495:
  22427. +#line 2795 "parse.y"
  22428.  { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22429.      break;}
  22430. -case 498:
  22431. -#line 2801 "parse.y"
  22432. +case 496:
  22433. +#line 2797 "parse.y"
  22434.  { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22435.      break;}
  22436. -case 499:
  22437. -#line 2803 "parse.y"
  22438. +case 497:
  22439. +#line 2799 "parse.y"
  22440.  { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
  22441.      break;}
  22442. -case 500:
  22443. -#line 2805 "parse.y"
  22444. +case 498:
  22445. +#line 2801 "parse.y"
  22446.  { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
  22447.      break;}
  22448. -case 501:
  22449. -#line 2807 "parse.y"
  22450. +case 499:
  22451. +#line 2803 "parse.y"
  22452.  { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
  22453.            yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
  22454.          ;
  22455.      break;}
  22456. -case 503:
  22457. -#line 2815 "parse.y"
  22458. +case 501:
  22459. +#line 2811 "parse.y"
  22460.  { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22461.      break;}
  22462. -case 504:
  22463. -#line 2817 "parse.y"
  22464. +case 502:
  22465. +#line 2813 "parse.y"
  22466.  { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22467.      break;}
  22468. -case 505:
  22469. -#line 2819 "parse.y"
  22470. +case 503:
  22471. +#line 2815 "parse.y"
  22472.  { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
  22473.      break;}
  22474. -case 506:
  22475. -#line 2821 "parse.y"
  22476. +case 504:
  22477. +#line 2817 "parse.y"
  22478.  { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
  22479.      break;}
  22480. -case 507:
  22481. -#line 2823 "parse.y"
  22482. +case 505:
  22483. +#line 2819 "parse.y"
  22484.  { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
  22485.            yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
  22486.          ;
  22487.      break;}
  22488. +case 507:
  22489. +#line 2827 "parse.y"
  22490. +{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
  22491. +    break;}
  22492. +case 508:
  22493. +#line 2829 "parse.y"
  22494. +{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
  22495. +    break;}
  22496.  case 509:
  22497.  #line 2831 "parse.y"
  22498. -{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
  22499. +{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
  22500.      break;}
  22501.  case 510:
  22502.  #line 2833 "parse.y"
  22503. -{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
  22504. +{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, NULL_TREE, NULL_TREE); ;
  22505.      break;}
  22506.  case 511:
  22507.  #line 2835 "parse.y"
  22508. -{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
  22509. +{ yyval.ttype = finish_decl_parsing (yyvsp[-1].ttype); ;
  22510.      break;}
  22511.  case 512:
  22512.  #line 2837 "parse.y"
  22513. -{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, NULL_TREE, NULL_TREE); ;
  22514. +{ yyval.ttype = yyvsp[-1].ttype; ;
  22515.      break;}
  22516.  case 513:
  22517.  #line 2839 "parse.y"
  22518. -{ yyval.ttype = yyvsp[-1].ttype; ;
  22519. +{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
  22520.      break;}
  22521.  case 514:
  22522.  #line 2841 "parse.y"
  22523. -{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
  22524. -    break;}
  22525. -case 515:
  22526. -#line 2843 "parse.y"
  22527.  { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
  22528.      break;}
  22529. -case 516:
  22530. -#line 2848 "parse.y"
  22531. +case 515:
  22532. +#line 2846 "parse.y"
  22533.  { got_scope = NULL_TREE;
  22534.            yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
  22535.      break;}
  22536. -case 517:
  22537. -#line 2854 "parse.y"
  22538. +case 516:
  22539. +#line 2852 "parse.y"
  22540.  { got_scope = NULL_TREE;
  22541.            yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
  22542.      break;}
  22543. -case 519:
  22544. -#line 2861 "parse.y"
  22545. +case 518:
  22546. +#line 2859 "parse.y"
  22547.  { yyval.ttype = yyvsp[0].ttype; ;
  22548.      break;}
  22549. +case 519:
  22550. +#line 2864 "parse.y"
  22551. +{ yyval.ttype = build_functional_cast (yyval.ttype, yyvsp[-1].ttype); ;
  22552. +    break;}
  22553.  case 520:
  22554.  #line 2866 "parse.y"
  22555. -{ yyval.ttype = build_functional_cast (yyval.ttype, yyvsp[-1].ttype); ;
  22556. +{ yyval.ttype = reparse_decl_as_expr (yyval.ttype, yyvsp[-1].ttype); ;
  22557.      break;}
  22558.  case 521:
  22559.  #line 2868 "parse.y"
  22560. -{ yyval.ttype = reparse_decl_as_expr (yyval.ttype, yyvsp[-1].ttype); ;
  22561. -    break;}
  22562. -case 522:
  22563. -#line 2870 "parse.y"
  22564.  { yyval.ttype = reparse_absdcl_as_expr (yyval.ttype, yyvsp[0].ttype); ;
  22565.      break;}
  22566. -case 526:
  22567. -#line 2881 "parse.y"
  22568. +case 525:
  22569. +#line 2879 "parse.y"
  22570.  { yyval.ttype = yyvsp[0].ttype; ;
  22571.      break;}
  22572. +case 526:
  22573. +#line 2886 "parse.y"
  22574. +{ got_scope = TREE_TYPE (yyval.ttype); ;
  22575. +    break;}
  22576.  case 527:
  22577.  #line 2888 "parse.y"
  22578.  { got_scope = TREE_TYPE (yyval.ttype); ;
  22579.      break;}
  22580. -case 528:
  22581. -#line 2890 "parse.y"
  22582. -{ got_scope = TREE_TYPE (yyval.ttype); ;
  22583. +case 529:
  22584. +#line 2904 "parse.y"
  22585. +{ yyval.ttype = yyvsp[0].ttype; ;
  22586.      break;}
  22587. -case 530:
  22588. -#line 2906 "parse.y"
  22589. +case 531:
  22590. +#line 2910 "parse.y"
  22591.  { yyval.ttype = yyvsp[0].ttype; ;
  22592.      break;}
  22593.  case 532:
  22594. -#line 2912 "parse.y"
  22595. -{ yyval.ttype = yyvsp[0].ttype; ;
  22596. +#line 2915 "parse.y"
  22597. +{ got_scope = NULL_TREE; ;
  22598.      break;}
  22599.  case 533:
  22600.  #line 2917 "parse.y"
  22601. -{ got_scope = NULL_TREE; ;
  22602. +{ yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ;
  22603.      break;}
  22604.  case 534:
  22605. -#line 2919 "parse.y"
  22606. -{ yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ;
  22607. +#line 2924 "parse.y"
  22608. +{ got_scope = void_type_node; ;
  22609.      break;}
  22610.  case 535:
  22611. -#line 2926 "parse.y"
  22612. -{ got_scope = void_type_node; ;
  22613. +#line 2930 "parse.y"
  22614. +{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22615.      break;}
  22616.  case 536:
  22617.  #line 2932 "parse.y"
  22618. -{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22619. +{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
  22620.      break;}
  22621.  case 537:
  22622.  #line 2934 "parse.y"
  22623. -{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
  22624. +{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22625.      break;}
  22626.  case 538:
  22627.  #line 2936 "parse.y"
  22628. -{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22629. +{ yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
  22630.      break;}
  22631.  case 539:
  22632.  #line 2938 "parse.y"
  22633. -{ yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
  22634. -    break;}
  22635. -case 540:
  22636. -#line 2940 "parse.y"
  22637.  { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
  22638.            yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
  22639.          ;
  22640.      break;}
  22641. -case 541:
  22642. -#line 2944 "parse.y"
  22643. +case 540:
  22644. +#line 2942 "parse.y"
  22645.  { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
  22646.            yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
  22647.          ;
  22648.      break;}
  22649. +case 542:
  22650. +#line 2951 "parse.y"
  22651. +{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
  22652. +    break;}
  22653.  case 543:
  22654.  #line 2953 "parse.y"
  22655. -{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
  22656. +{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
  22657.      break;}
  22658.  case 544:
  22659. -#line 2955 "parse.y"
  22660. -{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
  22661. +#line 2959 "parse.y"
  22662. +{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22663.      break;}
  22664.  case 545:
  22665.  #line 2961 "parse.y"
  22666. -{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22667. +{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
  22668.      break;}
  22669.  case 546:
  22670.  #line 2963 "parse.y"
  22671. -{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
  22672. +{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
  22673.      break;}
  22674.  case 547:
  22675.  #line 2965 "parse.y"
  22676. -{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
  22677. +{ yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ;
  22678.      break;}
  22679.  case 548:
  22680.  #line 2967 "parse.y"
  22681. -{ yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ;
  22682. +{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22683.      break;}
  22684.  case 549:
  22685.  #line 2969 "parse.y"
  22686. -{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  22687. +{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
  22688.      break;}
  22689.  case 550:
  22690.  #line 2971 "parse.y"
  22691. -{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
  22692. +{ yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
  22693.      break;}
  22694.  case 551:
  22695.  #line 2973 "parse.y"
  22696. -{ yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
  22697. +{ yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ;
  22698.      break;}
  22699.  case 552:
  22700.  #line 2975 "parse.y"
  22701. -{ yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ;
  22702. -    break;}
  22703. -case 553:
  22704. -#line 2977 "parse.y"
  22705.  { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
  22706.            yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
  22707.          ;
  22708.      break;}
  22709. -case 554:
  22710. -#line 2981 "parse.y"
  22711. +case 553:
  22712. +#line 2979 "parse.y"
  22713.  { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
  22714.            yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
  22715.          ;
  22716.      break;}
  22717. -case 556:
  22718. -#line 2990 "parse.y"
  22719. +case 555:
  22720. +#line 2988 "parse.y"
  22721.  { yyval.ttype = yyvsp[-1].ttype; ;
  22722.      break;}
  22723. +case 557:
  22724. +#line 2992 "parse.y"
  22725. +{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
  22726. +    break;}
  22727.  case 558:
  22728.  #line 2994 "parse.y"
  22729. -{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
  22730. +{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
  22731.      break;}
  22732.  case 559:
  22733.  #line 2996 "parse.y"
  22734. -{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
  22735. +{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
  22736.      break;}
  22737.  case 560:
  22738.  #line 2998 "parse.y"
  22739. -{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
  22740. +{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
  22741.      break;}
  22742.  case 561:
  22743.  #line 3000 "parse.y"
  22744. -{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
  22745. +{ yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype); ;
  22746.      break;}
  22747.  case 562:
  22748.  #line 3002 "parse.y"
  22749. -{ yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype); ;
  22750. +{ TREE_OPERAND (yyval.ttype, 2) = yyvsp[0].ttype; ;
  22751.      break;}
  22752.  case 563:
  22753.  #line 3004 "parse.y"
  22754. @@ -6606,31 +6556,27 @@
  22755.      break;}
  22756.  case 564:
  22757.  #line 3006 "parse.y"
  22758. -{ TREE_OPERAND (yyval.ttype, 2) = yyvsp[0].ttype; ;
  22759. +{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
  22760.      break;}
  22761.  case 565:
  22762.  #line 3008 "parse.y"
  22763. -{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
  22764. -    break;}
  22765. -case 566:
  22766. -#line 3010 "parse.y"
  22767.  { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ;
  22768.      break;}
  22769. -case 572:
  22770. -#line 3032 "parse.y"
  22771. +case 571:
  22772. +#line 3030 "parse.y"
  22773.  { emit_line_note (input_filename, lineno);
  22774.            pushlevel (0);
  22775.            clear_last_expr ();
  22776.            push_momentary ();
  22777.            expand_start_bindings (0); ;
  22778.      break;}
  22779. -case 574:
  22780. -#line 3044 "parse.y"
  22781. +case 573:
  22782. +#line 3042 "parse.y"
  22783.  { if (flag_ansi)
  22784.              pedwarn ("ANSI C++ forbids label declarations"); ;
  22785.      break;}
  22786. -case 577:
  22787. -#line 3055 "parse.y"
  22788. +case 576:
  22789. +#line 3053 "parse.y"
  22790.  { tree link;
  22791.            for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
  22792.              {
  22793. @@ -6640,63 +6586,63 @@
  22794.              }
  22795.          ;
  22796.      break;}
  22797. -case 578:
  22798. -#line 3069 "parse.y"
  22799. +case 577:
  22800. +#line 3067 "parse.y"
  22801.  {;
  22802.      break;}
  22803. -case 580:
  22804. -#line 3074 "parse.y"
  22805. +case 579:
  22806. +#line 3072 "parse.y"
  22807.  { expand_end_bindings (getdecls (), kept_level_p(), 1);
  22808.            yyval.ttype = poplevel (kept_level_p (), 1, 0);
  22809.            pop_momentary (); ;
  22810.      break;}
  22811. -case 581:
  22812. -#line 3078 "parse.y"
  22813. +case 580:
  22814. +#line 3076 "parse.y"
  22815.  { expand_end_bindings (getdecls (), kept_level_p(), 1);
  22816.            yyval.ttype = poplevel (kept_level_p (), 1, 0);
  22817.            pop_momentary (); ;
  22818.      break;}
  22819. -case 582:
  22820. -#line 3082 "parse.y"
  22821. +case 581:
  22822. +#line 3080 "parse.y"
  22823.  { expand_end_bindings (getdecls (), kept_level_p(), 1);
  22824.            yyval.ttype = poplevel (kept_level_p (), 0, 0);
  22825.            pop_momentary (); ;
  22826.      break;}
  22827. -case 583:
  22828. -#line 3086 "parse.y"
  22829. +case 582:
  22830. +#line 3084 "parse.y"
  22831.  { expand_end_bindings (getdecls (), kept_level_p(), 1);
  22832.            yyval.ttype = poplevel (kept_level_p (), 0, 0);
  22833.            pop_momentary (); ;
  22834.      break;}
  22835. -case 584:
  22836. -#line 3093 "parse.y"
  22837. +case 583:
  22838. +#line 3091 "parse.y"
  22839.  { cond_stmt_keyword = "if"; ;
  22840.      break;}
  22841. -case 585:
  22842. -#line 3095 "parse.y"
  22843. +case 584:
  22844. +#line 3093 "parse.y"
  22845.  { emit_line_note (input_filename, lineno);
  22846.            expand_start_cond (yyvsp[0].ttype, 0); ;
  22847.      break;}
  22848. -case 587:
  22849. -#line 3102 "parse.y"
  22850. +case 586:
  22851. +#line 3100 "parse.y"
  22852.  { finish_stmt (); ;
  22853.      break;}
  22854. -case 588:
  22855. -#line 3104 "parse.y"
  22856. +case 587:
  22857. +#line 3102 "parse.y"
  22858.  { expand_end_bindings (getdecls (), kept_level_p (), 1);
  22859.            yyval.ttype = poplevel (kept_level_p (), 1, 0);
  22860.            pop_momentary (); ;
  22861.      break;}
  22862. -case 589:
  22863. -#line 3111 "parse.y"
  22864. +case 588:
  22865. +#line 3109 "parse.y"
  22866. +{ finish_stmt (); ;
  22867. +    break;}
  22868. +case 590:
  22869. +#line 3115 "parse.y"
  22870.  { finish_stmt (); ;
  22871.      break;}
  22872.  case 591:
  22873.  #line 3117 "parse.y"
  22874. -{ finish_stmt (); ;
  22875. -    break;}
  22876. -case 592:
  22877. -#line 3119 "parse.y"
  22878.  {
  22879.            tree expr = yyvsp[-1].ttype;
  22880.            emit_line_note (input_filename, lineno);
  22881. @@ -6710,82 +6656,82 @@
  22882.            clear_momentary ();
  22883.            finish_stmt (); ;
  22884.      break;}
  22885. -case 593:
  22886. -#line 3132 "parse.y"
  22887. +case 592:
  22888. +#line 3130 "parse.y"
  22889.  { expand_start_else (); ;
  22890.      break;}
  22891. -case 594:
  22892. -#line 3134 "parse.y"
  22893. +case 593:
  22894. +#line 3132 "parse.y"
  22895.  { expand_end_cond ();
  22896.            expand_end_bindings (getdecls (), kept_level_p (), 1);
  22897.            poplevel (kept_level_p (), 1, 0);
  22898.            pop_momentary ();
  22899.            finish_stmt (); ;
  22900.      break;}
  22901. -case 595:
  22902. -#line 3140 "parse.y"
  22903. +case 594:
  22904. +#line 3138 "parse.y"
  22905.  { expand_end_cond ();
  22906.            expand_end_bindings (getdecls (), kept_level_p (), 1);
  22907.            poplevel (kept_level_p (), 1, 0);
  22908.            pop_momentary ();
  22909.            finish_stmt (); ;
  22910.      break;}
  22911. -case 596:
  22912. -#line 3146 "parse.y"
  22913. +case 595:
  22914. +#line 3144 "parse.y"
  22915.  { emit_nop ();
  22916.            emit_line_note (input_filename, lineno);
  22917.            expand_start_loop (1);
  22918.            cond_stmt_keyword = "while"; ;
  22919.      break;}
  22920. +case 596:
  22921. +#line 3149 "parse.y"
  22922. +{ expand_exit_loop_if_false (0, yyvsp[0].ttype); ;
  22923. +    break;}
  22924.  case 597:
  22925.  #line 3151 "parse.y"
  22926. -{ expand_exit_loop_if_false (0, yyvsp[0].ttype); ;
  22927. -    break;}
  22928. -case 598:
  22929. -#line 3153 "parse.y"
  22930.  { expand_end_bindings (getdecls (), kept_level_p (), 1);
  22931.            poplevel (kept_level_p (), 1, 0);
  22932.            pop_momentary ();
  22933.            expand_end_loop ();
  22934.            finish_stmt (); ;
  22935.      break;}
  22936. -case 599:
  22937. -#line 3159 "parse.y"
  22938. +case 598:
  22939. +#line 3157 "parse.y"
  22940.  { emit_nop ();
  22941.            emit_line_note (input_filename, lineno);
  22942.            expand_start_loop_continue_elsewhere (1); ;
  22943.      break;}
  22944. -case 600:
  22945. -#line 3163 "parse.y"
  22946. +case 599:
  22947. +#line 3161 "parse.y"
  22948.  { expand_loop_continue_here ();
  22949.            cond_stmt_keyword = "do"; ;
  22950.      break;}
  22951. -case 601:
  22952. -#line 3166 "parse.y"
  22953. +case 600:
  22954. +#line 3164 "parse.y"
  22955.  { emit_line_note (input_filename, lineno);
  22956.            expand_exit_loop_if_false (0, yyvsp[-1].ttype);
  22957.            expand_end_loop ();
  22958.            clear_momentary ();
  22959.            finish_stmt (); ;
  22960.      break;}
  22961. -case 602:
  22962. -#line 3172 "parse.y"
  22963. +case 601:
  22964. +#line 3170 "parse.y"
  22965.  { emit_nop ();
  22966.            emit_line_note (input_filename, lineno);
  22967.            if (yyvsp[0].ttype) cplus_expand_expr_stmt (yyvsp[0].ttype);
  22968.            expand_start_loop_continue_elsewhere (1); ;
  22969.      break;}
  22970. -case 603:
  22971. -#line 3177 "parse.y"
  22972. +case 602:
  22973. +#line 3175 "parse.y"
  22974.  { emit_line_note (input_filename, lineno);
  22975.            if (yyvsp[-1].ttype) expand_exit_loop_if_false (0, yyvsp[-1].ttype); ;
  22976.      break;}
  22977. -case 604:
  22978. -#line 3182 "parse.y"
  22979. +case 603:
  22980. +#line 3180 "parse.y"
  22981.  { push_momentary (); ;
  22982.      break;}
  22983. -case 605:
  22984. -#line 3184 "parse.y"
  22985. +case 604:
  22986. +#line 3182 "parse.y"
  22987.  { emit_line_note (input_filename, lineno);
  22988.            expand_end_bindings (getdecls (), kept_level_p (), 1);
  22989.            poplevel (kept_level_p (), 1, 0);
  22990. @@ -6796,24 +6742,24 @@
  22991.            expand_end_loop ();
  22992.            finish_stmt (); ;
  22993.      break;}
  22994. -case 606:
  22995. -#line 3194 "parse.y"
  22996. +case 605:
  22997. +#line 3192 "parse.y"
  22998.  { emit_nop ();
  22999.            emit_line_note (input_filename, lineno);
  23000.            expand_start_loop_continue_elsewhere (1); ;
  23001.      break;}
  23002. -case 607:
  23003. -#line 3198 "parse.y"
  23004. +case 606:
  23005. +#line 3196 "parse.y"
  23006.  { emit_line_note (input_filename, lineno);
  23007.            if (yyvsp[-1].ttype) expand_exit_loop_if_false (0, yyvsp[-1].ttype); ;
  23008.      break;}
  23009. -case 608:
  23010. -#line 3203 "parse.y"
  23011. +case 607:
  23012. +#line 3201 "parse.y"
  23013.  { push_momentary ();
  23014.            yyvsp[0].itype = lineno; ;
  23015.      break;}
  23016. -case 609:
  23017. -#line 3206 "parse.y"
  23018. +case 608:
  23019. +#line 3204 "parse.y"
  23020.  { emit_line_note (input_filename, (int) yyvsp[-2].itype);
  23021.            expand_end_bindings (getdecls (), kept_level_p (), 1);
  23022.            poplevel (kept_level_p (), 1, 0);
  23023. @@ -6825,16 +6771,16 @@
  23024.            finish_stmt ();
  23025.          ;
  23026.      break;}
  23027. -case 610:
  23028. -#line 3217 "parse.y"
  23029. +case 609:
  23030. +#line 3215 "parse.y"
  23031.  { emit_line_note (input_filename, lineno);
  23032.            c_expand_start_case (yyvsp[-1].ttype);
  23033.            /* Don't let the tree nodes for $4 be discarded by
  23034.               clear_momentary during the parsing of the next stmt.  */
  23035.            push_momentary (); ;
  23036.      break;}
  23037. -case 611:
  23038. -#line 3223 "parse.y"
  23039. +case 610:
  23040. +#line 3221 "parse.y"
  23041.  { expand_end_case (yyvsp[-3].ttype);
  23042.            pop_momentary ();
  23043.            expand_end_bindings (getdecls (), kept_level_p (), 1);
  23044. @@ -6842,8 +6788,8 @@
  23045.            pop_momentary ();
  23046.            finish_stmt (); ;
  23047.      break;}
  23048. -case 612:
  23049. -#line 3230 "parse.y"
  23050. +case 611:
  23051. +#line 3228 "parse.y"
  23052.  { register tree value = check_cp_case_value (yyvsp[-1].ttype);
  23053.            register tree label
  23054.              = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
  23055. @@ -6868,8 +6814,8 @@
  23056.            define_case_label (label);
  23057.          ;
  23058.      break;}
  23059. -case 614:
  23060. -#line 3255 "parse.y"
  23061. +case 613:
  23062. +#line 3253 "parse.y"
  23063.  { register tree value1 = check_cp_case_value (yyvsp[-3].ttype);
  23064.            register tree value2 = check_cp_case_value (yyvsp[-1].ttype);
  23065.            register tree label
  23066. @@ -6901,8 +6847,8 @@
  23067.            define_case_label (label);
  23068.          ;
  23069.      break;}
  23070. -case 616:
  23071. -#line 3287 "parse.y"
  23072. +case 615:
  23073. +#line 3285 "parse.y"
  23074.  {
  23075.            tree duplicate;
  23076.            register tree label
  23077. @@ -6918,40 +6864,40 @@
  23078.            define_case_label (NULL_TREE);
  23079.          ;
  23080.      break;}
  23081. -case 618:
  23082. -#line 3303 "parse.y"
  23083. +case 617:
  23084. +#line 3301 "parse.y"
  23085.  { emit_line_note (input_filename, lineno);
  23086.            if ( ! expand_exit_something ())
  23087.              error ("break statement not within loop or switch"); ;
  23088.      break;}
  23089. -case 619:
  23090. -#line 3307 "parse.y"
  23091. +case 618:
  23092. +#line 3305 "parse.y"
  23093.  { emit_line_note (input_filename, lineno);
  23094.            if (! expand_continue_loop (0))
  23095.              error ("continue statement not within a loop"); ;
  23096.      break;}
  23097. -case 620:
  23098. -#line 3311 "parse.y"
  23099. +case 619:
  23100. +#line 3309 "parse.y"
  23101.  { emit_line_note (input_filename, lineno);
  23102.            c_expand_return (NULL_TREE); ;
  23103.      break;}
  23104. -case 621:
  23105. -#line 3314 "parse.y"
  23106. +case 620:
  23107. +#line 3312 "parse.y"
  23108.  { emit_line_note (input_filename, lineno);
  23109.            c_expand_return (yyvsp[-1].ttype);
  23110.            finish_stmt ();
  23111.          ;
  23112.      break;}
  23113. -case 622:
  23114. -#line 3319 "parse.y"
  23115. +case 621:
  23116. +#line 3317 "parse.y"
  23117.  { if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
  23118.            emit_line_note (input_filename, lineno);
  23119.            expand_asm (yyvsp[-2].ttype);
  23120.            finish_stmt ();
  23121.          ;
  23122.      break;}
  23123. -case 623:
  23124. -#line 3326 "parse.y"
  23125. +case 622:
  23126. +#line 3324 "parse.y"
  23127.  { if (TREE_CHAIN (yyvsp[-4].ttype)) yyvsp[-4].ttype = combine_strings (yyvsp[-4].ttype);
  23128.            emit_line_note (input_filename, lineno);
  23129.            c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
  23130. @@ -6960,8 +6906,8 @@
  23131.            finish_stmt ();
  23132.          ;
  23133.      break;}
  23134. -case 624:
  23135. -#line 3335 "parse.y"
  23136. +case 623:
  23137. +#line 3333 "parse.y"
  23138.  { if (TREE_CHAIN (yyvsp[-6].ttype)) yyvsp[-6].ttype = combine_strings (yyvsp[-6].ttype);
  23139.            emit_line_note (input_filename, lineno);
  23140.            c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
  23141. @@ -6970,8 +6916,8 @@
  23142.            finish_stmt ();
  23143.          ;
  23144.      break;}
  23145. -case 625:
  23146. -#line 3345 "parse.y"
  23147. +case 624:
  23148. +#line 3343 "parse.y"
  23149.  { if (TREE_CHAIN (yyvsp[-8].ttype)) yyvsp[-8].ttype = combine_strings (yyvsp[-8].ttype);
  23150.            emit_line_note (input_filename, lineno);
  23151.            c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
  23152. @@ -6980,83 +6926,83 @@
  23153.            finish_stmt ();
  23154.          ;
  23155.      break;}
  23156. -case 626:
  23157. -#line 3353 "parse.y"
  23158. +case 625:
  23159. +#line 3351 "parse.y"
  23160.  { emit_line_note (input_filename, lineno);
  23161.            expand_computed_goto (yyvsp[-1].ttype); ;
  23162.      break;}
  23163. -case 627:
  23164. -#line 3356 "parse.y"
  23165. +case 626:
  23166. +#line 3354 "parse.y"
  23167.  { tree decl;
  23168.            emit_line_note (input_filename, lineno);
  23169.            decl = lookup_label (yyvsp[-1].ttype);
  23170.            TREE_USED (decl) = 1;
  23171.            expand_goto (decl); ;
  23172.      break;}
  23173. -case 628:
  23174. -#line 3362 "parse.y"
  23175. +case 627:
  23176. +#line 3360 "parse.y"
  23177.  { finish_stmt (); ;
  23178.      break;}
  23179. -case 629:
  23180. -#line 3364 "parse.y"
  23181. +case 628:
  23182. +#line 3362 "parse.y"
  23183.  { error ("label must be followed by statement");
  23184.            yyungetc ('}', 0);
  23185.            finish_stmt (); ;
  23186.      break;}
  23187. -case 630:
  23188. -#line 3368 "parse.y"
  23189. +case 629:
  23190. +#line 3366 "parse.y"
  23191.  { finish_stmt (); ;
  23192.      break;}
  23193. -case 632:
  23194. -#line 3374 "parse.y"
  23195. +case 631:
  23196. +#line 3372 "parse.y"
  23197.  { expand_start_try_stmts (); ;
  23198.      break;}
  23199. -case 633:
  23200. -#line 3376 "parse.y"
  23201. +case 632:
  23202. +#line 3374 "parse.y"
  23203.  { expand_end_try_stmts ();
  23204.            expand_start_all_catch (); ;
  23205.      break;}
  23206. -case 634:
  23207. -#line 3379 "parse.y"
  23208. +case 633:
  23209. +#line 3377 "parse.y"
  23210.  { expand_end_all_catch (); ;
  23211.      break;}
  23212. -case 635:
  23213. -#line 3387 "parse.y"
  23214. +case 634:
  23215. +#line 3385 "parse.y"
  23216.  { expand_end_bindings (0,1,1);
  23217.            poplevel (2,0,0);
  23218.          ;
  23219.      break;}
  23220. -case 636:
  23221. -#line 3391 "parse.y"
  23222. +case 635:
  23223. +#line 3389 "parse.y"
  23224.  { expand_end_bindings (0,1,1);
  23225.            poplevel (2,0,0);
  23226.          ;
  23227.      break;}
  23228. -case 637:
  23229. -#line 3395 "parse.y"
  23230. +case 636:
  23231. +#line 3393 "parse.y"
  23232.  { expand_end_bindings (0,1,1);
  23233.            poplevel (2,0,0);
  23234.          ;
  23235.      break;}
  23236. -case 639:
  23237. -#line 3403 "parse.y"
  23238. +case 638:
  23239. +#line 3401 "parse.y"
  23240.  { emit_line_note (input_filename, lineno); ;
  23241.      break;}
  23242. -case 640:
  23243. -#line 3405 "parse.y"
  23244. +case 639:
  23245. +#line 3403 "parse.y"
  23246.  { expand_end_catch_block (); ;
  23247.      break;}
  23248. -case 643:
  23249. -#line 3415 "parse.y"
  23250. +case 642:
  23251. +#line 3413 "parse.y"
  23252.  { expand_start_catch_block (NULL_TREE, NULL_TREE); ;
  23253.      break;}
  23254. -case 644:
  23255. -#line 3427 "parse.y"
  23256. +case 643:
  23257. +#line 3425 "parse.y"
  23258.  { expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ttype),
  23259.                          TREE_VALUE (yyvsp[-1].ttype)); ;
  23260.      break;}
  23261. -case 645:
  23262. -#line 3433 "parse.y"
  23263. +case 644:
  23264. +#line 3431 "parse.y"
  23265.  { tree label;
  23266.          do_label:
  23267.            label = define_label (input_filename, lineno, yyvsp[-1].ttype);
  23268. @@ -7064,25 +7010,29 @@
  23269.              expand_label (label);
  23270.          ;
  23271.      break;}
  23272. +case 645:
  23273. +#line 3438 "parse.y"
  23274. +{ goto do_label; ;
  23275. +    break;}
  23276.  case 646:
  23277.  #line 3440 "parse.y"
  23278.  { goto do_label; ;
  23279.      break;}
  23280.  case 647:
  23281. -#line 3442 "parse.y"
  23282. -{ goto do_label; ;
  23283. +#line 3445 "parse.y"
  23284. +{ yyval.ttype = NULL_TREE; ;
  23285.      break;}
  23286.  case 648:
  23287.  #line 3447 "parse.y"
  23288. -{ yyval.ttype = NULL_TREE; ;
  23289. +{ yyval.ttype = yyvsp[-1].ttype; ;
  23290.      break;}
  23291.  case 649:
  23292.  #line 3449 "parse.y"
  23293. -{ yyval.ttype = yyvsp[-1].ttype; ;
  23294. +{ yyval.ttype = NULL_TREE; ;
  23295.      break;}
  23296.  case 650:
  23297. -#line 3451 "parse.y"
  23298. -{ yyval.ttype = NULL_TREE; ;
  23299. +#line 3454 "parse.y"
  23300. +{ yyval.itype = 0; ;
  23301.      break;}
  23302.  case 651:
  23303.  #line 3456 "parse.y"
  23304. @@ -7090,55 +7040,51 @@
  23305.      break;}
  23306.  case 652:
  23307.  #line 3458 "parse.y"
  23308. -{ yyval.itype = 0; ;
  23309. +{ yyval.itype = 1; ;
  23310.      break;}
  23311.  case 653:
  23312.  #line 3460 "parse.y"
  23313. -{ yyval.itype = 1; ;
  23314. -    break;}
  23315. -case 654:
  23316. -#line 3462 "parse.y"
  23317.  { yyval.itype = -1; ;
  23318.      break;}
  23319. -case 655:
  23320. -#line 3469 "parse.y"
  23321. +case 654:
  23322. +#line 3467 "parse.y"
  23323.  { emit_line_note (input_filename, lineno);
  23324.            yyval.ttype = NULL_TREE; ;
  23325.      break;}
  23326. -case 656:
  23327. -#line 3472 "parse.y"
  23328. +case 655:
  23329. +#line 3470 "parse.y"
  23330.  { emit_line_note (input_filename, lineno); ;
  23331.      break;}
  23332. -case 657:
  23333. -#line 3477 "parse.y"
  23334. +case 656:
  23335. +#line 3475 "parse.y"
  23336.  { yyval.ttype = NULL_TREE; ;
  23337.      break;}
  23338. -case 659:
  23339. -#line 3480 "parse.y"
  23340. +case 658:
  23341. +#line 3478 "parse.y"
  23342.  { yyval.ttype = NULL_TREE; ;
  23343.      break;}
  23344. -case 660:
  23345. -#line 3486 "parse.y"
  23346. +case 659:
  23347. +#line 3484 "parse.y"
  23348.  { yyval.ttype = NULL_TREE; ;
  23349.      break;}
  23350. -case 663:
  23351. -#line 3493 "parse.y"
  23352. +case 662:
  23353. +#line 3491 "parse.y"
  23354.  { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
  23355.      break;}
  23356. -case 664:
  23357. -#line 3498 "parse.y"
  23358. +case 663:
  23359. +#line 3496 "parse.y"
  23360.  { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ;
  23361.      break;}
  23362. -case 665:
  23363. -#line 3503 "parse.y"
  23364. +case 664:
  23365. +#line 3501 "parse.y"
  23366.  { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
  23367.      break;}
  23368. -case 666:
  23369. -#line 3505 "parse.y"
  23370. +case 665:
  23371. +#line 3503 "parse.y"
  23372.  { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
  23373.      break;}
  23374. -case 667:
  23375. -#line 3515 "parse.y"
  23376. +case 666:
  23377. +#line 3513 "parse.y"
  23378.  {
  23379.            if (strict_prototype)
  23380.              yyval.ttype = void_list_node;
  23381. @@ -7146,39 +7092,39 @@
  23382.              yyval.ttype = NULL_TREE;
  23383.          ;
  23384.      break;}
  23385. -case 669:
  23386. -#line 3523 "parse.y"
  23387. +case 668:
  23388. +#line 3521 "parse.y"
  23389.  { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, void_list_node);
  23390.            TREE_PARMLIST (yyval.ttype) = 1; ;
  23391.      break;}
  23392. -case 670:
  23393. -#line 3531 "parse.y"
  23394. +case 669:
  23395. +#line 3529 "parse.y"
  23396.  {
  23397.            yyval.ttype = chainon (yyval.ttype, void_list_node);
  23398.            TREE_PARMLIST (yyval.ttype) = 1;
  23399.          ;
  23400.      break;}
  23401. -case 671:
  23402. -#line 3536 "parse.y"
  23403. +case 670:
  23404. +#line 3534 "parse.y"
  23405.  {
  23406.            TREE_PARMLIST (yyval.ttype) = 1;
  23407.          ;
  23408.      break;}
  23409. -case 672:
  23410. -#line 3541 "parse.y"
  23411. +case 671:
  23412. +#line 3539 "parse.y"
  23413.  {
  23414.            TREE_PARMLIST (yyval.ttype) = 1;
  23415.          ;
  23416.      break;}
  23417. -case 673:
  23418. -#line 3545 "parse.y"
  23419. +case 672:
  23420. +#line 3543 "parse.y"
  23421.  {
  23422.            yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); 
  23423.            TREE_PARMLIST (yyval.ttype) = 1;
  23424.          ;
  23425.      break;}
  23426. -case 674:
  23427. -#line 3550 "parse.y"
  23428. +case 673:
  23429. +#line 3548 "parse.y"
  23430.  {
  23431.            /* ARM $8.2.5 has this as a boxed-off comment.  */
  23432.            if (pedantic)
  23433. @@ -7186,27 +7132,27 @@
  23434.            yyval.ttype = NULL_TREE;
  23435.          ;
  23436.      break;}
  23437. -case 675:
  23438. -#line 3557 "parse.y"
  23439. +case 674:
  23440. +#line 3555 "parse.y"
  23441.  {
  23442.            TREE_PARMLIST (yyval.ttype) = 1;
  23443.          ;
  23444.      break;}
  23445. -case 676:
  23446. -#line 3561 "parse.y"
  23447. +case 675:
  23448. +#line 3559 "parse.y"
  23449.  {
  23450.            TREE_PARMLIST (yyval.ttype) = 1;
  23451.          ;
  23452.      break;}
  23453. -case 677:
  23454. -#line 3565 "parse.y"
  23455. +case 676:
  23456. +#line 3563 "parse.y"
  23457.  {
  23458.            yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype);
  23459.            TREE_PARMLIST (yyval.ttype) = 1;
  23460.          ;
  23461.      break;}
  23462. -case 678:
  23463. -#line 3570 "parse.y"
  23464. +case 677:
  23465. +#line 3568 "parse.y"
  23466.  {
  23467.            /* This helps us recover from really nasty
  23468.               parse errors, for example, a missing right
  23469. @@ -7218,8 +7164,8 @@
  23470.            yychar = ')';
  23471.          ;
  23472.      break;}
  23473. -case 679:
  23474. -#line 3581 "parse.y"
  23475. +case 678:
  23476. +#line 3579 "parse.y"
  23477.  {
  23478.            /* This helps us recover from really nasty
  23479.               parse errors, for example, a missing right
  23480. @@ -7231,184 +7177,188 @@
  23481.            yychar = ')';
  23482.          ;
  23483.      break;}
  23484. +case 679:
  23485. +#line 3594 "parse.y"
  23486. +{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
  23487. +    break;}
  23488.  case 680:
  23489.  #line 3596 "parse.y"
  23490. -{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
  23491. +{ yyval.ttype = build_tree_list (yyvsp[0].ttype, yyval.ttype); ;
  23492.      break;}
  23493.  case 681:
  23494.  #line 3598 "parse.y"
  23495. -{ yyval.ttype = build_tree_list (yyvsp[0].ttype, yyval.ttype); ;
  23496. +{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
  23497.      break;}
  23498.  case 682:
  23499.  #line 3600 "parse.y"
  23500. -{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
  23501. +{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
  23502.      break;}
  23503.  case 683:
  23504.  #line 3602 "parse.y"
  23505. -{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
  23506. -    break;}
  23507. -case 684:
  23508. -#line 3604 "parse.y"
  23509.  { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
  23510.      break;}
  23511. -case 686:
  23512. -#line 3610 "parse.y"
  23513. +case 685:
  23514. +#line 3608 "parse.y"
  23515.  { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
  23516.      break;}
  23517. +case 686:
  23518. +#line 3631 "parse.y"
  23519. +{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
  23520. +    break;}
  23521.  case 687:
  23522.  #line 3633 "parse.y"
  23523.  { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
  23524.      break;}
  23525.  case 688:
  23526.  #line 3635 "parse.y"
  23527. -{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
  23528. +{ yyval.ttype = build_tree_list (get_decl_list (yyval.ttype), yyvsp[0].ttype); ;
  23529.      break;}
  23530.  case 689:
  23531.  #line 3637 "parse.y"
  23532. -{ yyval.ttype = build_tree_list (get_decl_list (yyval.ttype), yyvsp[0].ttype); ;
  23533. +{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
  23534.      break;}
  23535.  case 690:
  23536.  #line 3639 "parse.y"
  23537. -{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
  23538. +{ yyval.ttype = build_tree_list (yyval.ttype, NULL_TREE); ;
  23539.      break;}
  23540.  case 691:
  23541.  #line 3641 "parse.y"
  23542. -{ yyval.ttype = build_tree_list (yyval.ttype, NULL_TREE); ;
  23543. +{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
  23544.      break;}
  23545.  case 692:
  23546. -#line 3643 "parse.y"
  23547. -{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
  23548. +#line 3646 "parse.y"
  23549. +{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
  23550.      break;}
  23551.  case 693:
  23552.  #line 3648 "parse.y"
  23553. -{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
  23554. -    break;}
  23555. -case 694:
  23556. -#line 3650 "parse.y"
  23557.  { yyval.ttype = build_tree_list (yyvsp[0].ttype, yyval.ttype); ;
  23558.      break;}
  23559. -case 697:
  23560. -#line 3659 "parse.y"
  23561. +case 696:
  23562. +#line 3657 "parse.y"
  23563.  { see_typename (); ;
  23564.      break;}
  23565. -case 698:
  23566. -#line 3682 "parse.y"
  23567. +case 697:
  23568. +#line 3680 "parse.y"
  23569.  {
  23570.            warning ("type specifier omitted for parameter");
  23571.            yyval.ttype = build_tree_list (TREE_PURPOSE (TREE_VALUE (yyvsp[-1].ttype)), NULL_TREE);
  23572.          ;
  23573.      break;}
  23574. -case 699:
  23575. -#line 3687 "parse.y"
  23576. +case 698:
  23577. +#line 3685 "parse.y"
  23578.  {
  23579.            warning ("type specifier omitted for parameter");
  23580.            yyval.ttype = build_tree_list (TREE_PURPOSE (TREE_VALUE (yyvsp[-2].ttype)), yyval.ttype);
  23581.          ;
  23582.      break;}
  23583. -case 700:
  23584. -#line 3695 "parse.y"
  23585. +case 699:
  23586. +#line 3693 "parse.y"
  23587.  { yyval.ttype = NULL_TREE; ;
  23588.      break;}
  23589. -case 701:
  23590. -#line 3697 "parse.y"
  23591. +case 700:
  23592. +#line 3695 "parse.y"
  23593.  { yyval.ttype = yyvsp[-1].ttype; ;
  23594.      break;}
  23595. -case 702:
  23596. -#line 3702 "parse.y"
  23597. +case 701:
  23598. +#line 3700 "parse.y"
  23599.  { yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
  23600.      break;}
  23601. -case 704:
  23602. -#line 3708 "parse.y"
  23603. +case 703:
  23604. +#line 3706 "parse.y"
  23605.  {
  23606.            TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
  23607.            yyval.ttype = yyvsp[0].ttype;
  23608.          ;
  23609.      break;}
  23610. +case 704:
  23611. +#line 3714 "parse.y"
  23612. +{ yyval.ttype = NULL_TREE; ;
  23613. +    break;}
  23614.  case 705:
  23615.  #line 3716 "parse.y"
  23616. -{ yyval.ttype = NULL_TREE; ;
  23617. +{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  23618.      break;}
  23619.  case 706:
  23620.  #line 3718 "parse.y"
  23621. -{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  23622. +{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  23623.      break;}
  23624.  case 707:
  23625.  #line 3720 "parse.y"
  23626. -{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  23627. -    break;}
  23628. -case 708:
  23629. -#line 3722 "parse.y"
  23630.  { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
  23631.            yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
  23632.          ;
  23633.      break;}
  23634. -case 709:
  23635. -#line 3728 "parse.y"
  23636. +case 708:
  23637. +#line 3726 "parse.y"
  23638.  { got_scope = NULL_TREE; ;
  23639.      break;}
  23640. +case 709:
  23641. +#line 3731 "parse.y"
  23642. +{ yyval.ttype = ansi_opname[MULT_EXPR]; ;
  23643. +    break;}
  23644.  case 710:
  23645.  #line 3733 "parse.y"
  23646. -{ yyval.ttype = ansi_opname[MULT_EXPR]; ;
  23647. +{ yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
  23648.      break;}
  23649.  case 711:
  23650.  #line 3735 "parse.y"
  23651. -{ yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
  23652. +{ yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
  23653.      break;}
  23654.  case 712:
  23655.  #line 3737 "parse.y"
  23656. -{ yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
  23657. +{ yyval.ttype = ansi_opname[PLUS_EXPR]; ;
  23658.      break;}
  23659.  case 713:
  23660.  #line 3739 "parse.y"
  23661. -{ yyval.ttype = ansi_opname[PLUS_EXPR]; ;
  23662. +{ yyval.ttype = ansi_opname[MINUS_EXPR]; ;
  23663.      break;}
  23664.  case 714:
  23665.  #line 3741 "parse.y"
  23666. -{ yyval.ttype = ansi_opname[MINUS_EXPR]; ;
  23667. +{ yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
  23668.      break;}
  23669.  case 715:
  23670.  #line 3743 "parse.y"
  23671. -{ yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
  23672. +{ yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
  23673.      break;}
  23674.  case 716:
  23675.  #line 3745 "parse.y"
  23676. -{ yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
  23677. +{ yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
  23678.      break;}
  23679.  case 717:
  23680.  #line 3747 "parse.y"
  23681. -{ yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
  23682. +{ yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
  23683.      break;}
  23684.  case 718:
  23685.  #line 3749 "parse.y"
  23686. -{ yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
  23687. +{ yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
  23688.      break;}
  23689.  case 719:
  23690.  #line 3751 "parse.y"
  23691. -{ yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
  23692. +{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
  23693.      break;}
  23694.  case 720:
  23695.  #line 3753 "parse.y"
  23696. -{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
  23697. +{ yyval.ttype = ansi_opname[LT_EXPR]; ;
  23698.      break;}
  23699.  case 721:
  23700.  #line 3755 "parse.y"
  23701. -{ yyval.ttype = ansi_opname[LT_EXPR]; ;
  23702. +{ yyval.ttype = ansi_opname[GT_EXPR]; ;
  23703.      break;}
  23704.  case 722:
  23705.  #line 3757 "parse.y"
  23706. -{ yyval.ttype = ansi_opname[GT_EXPR]; ;
  23707. +{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
  23708.      break;}
  23709.  case 723:
  23710.  #line 3759 "parse.y"
  23711. -{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
  23712. +{ yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
  23713.      break;}
  23714.  case 724:
  23715.  #line 3761 "parse.y"
  23716. -{ yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
  23717. +{ yyval.ttype = ansi_opname [MODIFY_EXPR]; ;
  23718.      break;}
  23719.  case 725:
  23720.  #line 3763 "parse.y"
  23721. -{ yyval.ttype = ansi_opname [MODIFY_EXPR]; ;
  23722. +{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
  23723.      break;}
  23724.  case 726:
  23725.  #line 3765 "parse.y"
  23726. @@ -7416,79 +7366,75 @@
  23727.      break;}
  23728.  case 727:
  23729.  #line 3767 "parse.y"
  23730. -{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
  23731. +{ yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
  23732.      break;}
  23733.  case 728:
  23734.  #line 3769 "parse.y"
  23735. -{ yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
  23736. +{ yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
  23737.      break;}
  23738.  case 729:
  23739.  #line 3771 "parse.y"
  23740. -{ yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
  23741. +{ yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
  23742.      break;}
  23743.  case 730:
  23744.  #line 3773 "parse.y"
  23745. -{ yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
  23746. +{ yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
  23747.      break;}
  23748.  case 731:
  23749.  #line 3775 "parse.y"
  23750. -{ yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
  23751. +{ yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
  23752.      break;}
  23753.  case 732:
  23754.  #line 3777 "parse.y"
  23755. -{ yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
  23756. +{ yyval.ttype = ansi_opname[COND_EXPR]; ;
  23757.      break;}
  23758.  case 733:
  23759.  #line 3779 "parse.y"
  23760. -{ yyval.ttype = ansi_opname[COND_EXPR]; ;
  23761. +{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
  23762.      break;}
  23763.  case 734:
  23764.  #line 3781 "parse.y"
  23765. -{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
  23766. +{ yyval.ttype = ansi_opname[COMPONENT_REF]; ;
  23767.      break;}
  23768.  case 735:
  23769.  #line 3783 "parse.y"
  23770. -{ yyval.ttype = ansi_opname[COMPONENT_REF]; ;
  23771. +{ yyval.ttype = ansi_opname[MEMBER_REF]; ;
  23772.      break;}
  23773.  case 736:
  23774.  #line 3785 "parse.y"
  23775. -{ yyval.ttype = ansi_opname[MEMBER_REF]; ;
  23776. +{ yyval.ttype = ansi_opname[CALL_EXPR]; ;
  23777.      break;}
  23778.  case 737:
  23779.  #line 3787 "parse.y"
  23780. -{ yyval.ttype = ansi_opname[CALL_EXPR]; ;
  23781. +{ yyval.ttype = ansi_opname[ARRAY_REF]; ;
  23782.      break;}
  23783.  case 738:
  23784.  #line 3789 "parse.y"
  23785. -{ yyval.ttype = ansi_opname[ARRAY_REF]; ;
  23786. +{ yyval.ttype = ansi_opname[NEW_EXPR]; ;
  23787.      break;}
  23788.  case 739:
  23789.  #line 3791 "parse.y"
  23790. -{ yyval.ttype = ansi_opname[NEW_EXPR]; ;
  23791. +{ yyval.ttype = ansi_opname[DELETE_EXPR]; ;
  23792.      break;}
  23793.  case 740:
  23794.  #line 3793 "parse.y"
  23795. -{ yyval.ttype = ansi_opname[DELETE_EXPR]; ;
  23796. +{ yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ;
  23797.      break;}
  23798.  case 741:
  23799.  #line 3795 "parse.y"
  23800. -{ yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ;
  23801. +{ yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ;
  23802.      break;}
  23803.  case 742:
  23804. -#line 3797 "parse.y"
  23805. -{ yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ;
  23806. +#line 3798 "parse.y"
  23807. +{ yyval.ttype = grokoptypename (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  23808.      break;}
  23809.  case 743:
  23810.  #line 3800 "parse.y"
  23811. -{ yyval.ttype = grokoptypename (yyvsp[-1].ttype, yyvsp[0].ttype); ;
  23812. -    break;}
  23813. -case 744:
  23814. -#line 3802 "parse.y"
  23815.  { yyval.ttype = ansi_opname[ERROR_MARK]; ;
  23816.      break;}
  23817.  }
  23818.     /* the action file gets copied in in place of this dollarsign */
  23819. -#line 480 "/usr/local/lib/bison.simple"
  23820. +#line 465 "/usr/local/lib/bison.simple"
  23821.  
  23822.    yyvsp -= yylen;
  23823.    yyssp -= yylen;
  23824. @@ -7684,7 +7630,7 @@
  23825.    yystate = yyn;
  23826.    goto yynewstate;
  23827.  }
  23828. -#line 3805 "parse.y"
  23829. +#line 3803 "parse.y"
  23830.  
  23831.  
  23832.  #ifdef SPEW_DEBUG
  23833. diff -r -u -H -N gcc-2.6.3/cse.c gcc-i2.6.3/cse.c
  23834. --- gcc-2.6.3/cse.c    Tue Nov  1 18:38:40 1994
  23835. +++ gcc-i2.6.3/cse.c    Thu Feb 16 11:58:55 1995
  23836. @@ -6007,6 +6007,29 @@
  23837.        sets = (struct set *) alloca (sizeof (struct set));
  23838.        sets[0].rtl = x;
  23839.  
  23840. +/* intel1 */
  23841. +#ifdef STACK_REGS
  23842. +#ifdef IS_STACK_MODE
  23843. +      if (IS_STACK_MODE (DFmode) && GET_CODE (SET_SRC (x)) == CONST_DOUBLE 
  23844. +         && GET_CODE (SET_DEST (x)) == REG)
  23845. +        {
  23846. +           /* not worthwhile to hold on stack */
  23847. +      rtx tem = find_reg_note (insn, REG_EQUAL, 0);
  23848. +      
  23849. +      /* Record the actual constant value in a REG_EQUAL note, making
  23850. +         a new one if one does not already exist.  */
  23851. +      if (tem)
  23852. +        XEXP (tem, 0) = SET_SRC(x);
  23853. +      else
  23854. +        REG_NOTES (insn) = gen_rtx (EXPR_LIST, REG_EQUAL,
  23855. +                        SET_SRC(x), REG_NOTES (insn));
  23856. +
  23857. +      invalidate (SET_DEST (x), GET_MODE(x) );
  23858. +        }
  23859. +      else
  23860. +      
  23861. +#endif
  23862. +#endif
  23863.        /* Ignore SETs that are unconditional jumps.
  23864.       They never need cse processing, so this does not hurt.
  23865.       The reason is not efficiency but rather
  23866. @@ -6625,6 +6648,32 @@
  23867.        if (dest == pc_rtx && src_const && GET_CODE (src_const) == LABEL_REF)
  23868.      src_folded = src_const, src_folded_cost = -1;
  23869.        
  23870. +#ifdef SAVE_ON_REGS
  23871. +      /* intel1 If src is of form  (reg1 OP const) and src_folded
  23872. +         is of form (reg2 OP const) and the costs are the same
  23873. +         and reg1 != reg2,
  23874. +         then bump up the cost of src_folded so that src will be
  23875. +         preferred.  The reason for this is that if reg2 is used
  23876. +         here it's life may be extended thereby increasing register
  23877. +         pressure and causing superfulous movs.  */
  23878. +      {
  23879. +        char * fmt;
  23880. +        if (src)
  23881. +          fmt = GET_RTX_FORMAT (GET_CODE (src));
  23882. +        if (src && src_folded && src_cost == src_folded_cost
  23883. +            && GET_CODE (src) == GET_CODE (src_folded) 
  23884. +            && GET_RTX_LENGTH (GET_CODE (src)) == 2
  23885. +            && fmt[0] == 'e' && fmt[1] == 'e'
  23886. +            && GET_CODE (XEXP (src, 0)) == REG
  23887. +            && GET_CODE (XEXP (src, 1)) == CONST_INT 
  23888. +            && GET_CODE (XEXP (src_folded, 0)) == REG
  23889. +            && GET_CODE (XEXP (src_folded, 1)) == CONST_INT 
  23890. +            && !rtx_equal_p (XEXP (src, 0), XEXP (src_folded, 0)))
  23891. +          {
  23892. +            src_folded_cost++;
  23893. +          }          
  23894. +      }
  23895. +#endif
  23896.        /* Terminate loop when replacement made.  This must terminate since
  23897.           the current contents will be tested and will always be valid.  */
  23898.        while (1)
  23899. @@ -7068,6 +7117,16 @@
  23900.          if (sets[i].src_elt == 0)
  23901.            {
  23902.          register struct table_elt *elt;
  23903. +        /* intel1 */
  23904. +        int do_rehash=0;
  23905. +
  23906. +                /* intel1 */
  23907. +        if(GET_CODE(src)==REG && 
  23908. +           !REGNO_QTY_VALID_P (REGNO(src)))
  23909. +            { /* we will want to rehash all expressions based of src since
  23910. +                 reg_qty[REGNO(src)] is about to change */
  23911. +              do_rehash = 1;
  23912. +            }
  23913.  
  23914.          /* Note that these insert_regs calls cannot remove
  23915.             any of the src_elt's, because they would have failed to
  23916. diff -r -u -H -N gcc-2.6.3/expr.c gcc-i2.6.3/expr.c
  23917. --- gcc-2.6.3/expr.c    Wed Nov 30 19:08:49 1994
  23918. +++ gcc-i2.6.3/expr.c    Wed Feb 15 23:19:22 1995
  23919. @@ -23,6 +23,8 @@
  23920.  #include "rtl.h"
  23921.  #include "tree.h"
  23922.  #include "obstack.h"
  23923. +/* intel1 */
  23924. +#include "c-tree.h"
  23925.  #include "flags.h"
  23926.  #include "regs.h"
  23927.  #include "function.h"
  23928. @@ -8596,6 +8598,12 @@
  23929.        && (i = floor_log2 (TREE_INT_CST_LOW (TREE_OPERAND (exp, 1)))) >= 0
  23930.        && (mode = mode_for_size (i + 1, MODE_INT, 0)) != BLKmode
  23931.        && (type = type_for_mode (mode, 1)) != 0
  23932. +      /* intel1 */
  23933. +      && !(SLOW_SHORT_ACCESS
  23934. +         && (type == short_unsigned_type_node
  23935. +             || type == short_integer_type_node
  23936. +             || type == intHI_type_node
  23937. +             || type == unsigned_intHI_type_node))
  23938.        && TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (exp))
  23939.        && (cmp_optab->handlers[(int) TYPE_MODE (type)].insn_code
  23940.            != CODE_FOR_nothing))
  23941. @@ -8751,6 +8759,12 @@
  23942.      type = type_for_size (bitsize, unsignedp);
  23943.      if (! SLOW_BYTE_ACCESS
  23944.          && type != 0 && bitsize >= 0
  23945. +        /* intel1 */
  23946. +        && !(SLOW_SHORT_ACCESS 
  23947. +             && (type == short_unsigned_type_node 
  23948. +                 || type == short_integer_type_node
  23949. +                 || type == intHI_type_node 
  23950. +                 || type == unsigned_intHI_type_node))
  23951.          && TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (exp))
  23952.          && (cmp_optab->handlers[(int) TYPE_MODE (type)].insn_code
  23953.          != CODE_FOR_nothing))
  23954. diff -r -u -H -N gcc-2.6.3/flags.h gcc-i2.6.3/flags.h
  23955. --- gcc-2.6.3/flags.h    Thu May 12 20:04:27 1994
  23956. +++ gcc-i2.6.3/flags.h    Wed Feb 15 22:47:02 1995
  23957. @@ -357,3 +357,149 @@
  23958.     function.  */
  23959.  
  23960.  extern int current_function_has_nonlocal_goto;
  23961. +
  23962. +/* intel1 our optimization controllers */
  23963. +
  23964. +/* Optimize usage of registers for memory addresses */
  23965. +
  23966. +extern int flag_opt_reg_use;
  23967. +
  23968. +/* Do reduce all the mem address givs */
  23969. +
  23970. +extern int flag_all_mem_givs;
  23971. +
  23972. +/* Try to treat index terms of addresses as reducible mem givs */
  23973. +
  23974. +extern int flag_reduce_index_givs;
  23975. +
  23976. +/* After reload try to replace spill slots with equivalent registers */
  23977. +
  23978. +extern int flag_peep_spills;
  23979. +
  23980. +/* After reload try to optimize usage of spill slots in loops */
  23981. +
  23982. +extern int flag_loop_after_global;
  23983. +
  23984. +/* In optimization of loops treats jumps backwards as not nullifying
  23985. +   optimization opportunities.  */
  23986. +   
  23987. +extern int flag_jump_back;
  23988. +
  23989. +/* Do loop copy propogation */
  23990. +
  23991. +extern int flag_copy_prop;
  23992. +
  23993. +/* Do compare elimination */
  23994. +
  23995. +extern int flag_compare_elim;
  23996. +
  23997. +/* Do a mini software pipelining on stack registers */
  23998. +
  23999. +extern int flag_sftwr_pipe;
  24000. +
  24001. +/* Try aggressive changing of jumps taken to jumps not taken */
  24002. +
  24003. +extern int flag_opt_jumps_out;
  24004. +
  24005. +/* Try to replace memory operands with equivalent registers in first
  24006. +   pass of loop optimize */
  24007. +   
  24008. +extern int flag_replace_mem;
  24009. +
  24010. +/* Try to replace memory operands with equivalent stack registers in first
  24011. +   pass of loop optimize */
  24012. +   
  24013. +extern int flag_replace_stack_mem;
  24014. +
  24015. +/* After reload if a register is marked dead at a copy into another
  24016. +   register - see if the other register can be used in the first place.
  24017. +   Thereby eleiminating the copy.  */
  24018. +   
  24019. +extern int flag_reg_reg_copy_opt;
  24020. +
  24021. +/* Move stack registers that will be compared for equality off, the
  24022. +   stack before the comparison.  */
  24023. +   
  24024. +extern int flag_do_offload;
  24025. +
  24026. +/* Optimize usage of stack registers from the stack */
  24027. +
  24028. +extern int flag_opt_reg_stack;
  24029. +
  24030. +/* cse is sometimes detrimental - see flow.c */
  24031. +
  24032. +extern int flag_correct_cse_mistakes;
  24033. +
  24034. +/* Try to push loads back into loops if the loaded register has been spilled */
  24035. +
  24036. +extern int flag_push_load_into_loop;
  24037. +
  24038. +/* After reload use available registers to load memory operands into
  24039. +  them and use the register instead of the memory operand.  */
  24040. +  
  24041. +extern int flag_risc;
  24042. +
  24043. +/* After reload use available registers to load CONST_INTs into
  24044. +  them and then store the register instead of the CONST_INT.  */
  24045. +  
  24046. +extern int flag_risc_const;
  24047. +
  24048. +/* Allow scheduler to try to swap two instructions when the
  24049. +   first increments a register by a constant and the second
  24050. +   uses that register as a base
  24051. +*/
  24052. +
  24053. +extern int flag_swap_for_agi;
  24054. +
  24055. +/* A destination that was riscified should stay that way.  */
  24056. +
  24057. +extern int flag_risc_mem_dest;
  24058. +
  24059. +/* Try to use available registers so that a memory operand that is
  24060. +   reloaded will be reloaded into the same register.  This helps
  24061. +   loop_after_global.  */
  24062. +   
  24063. +extern int flag_replace_reload_regs;
  24064. +
  24065. +/* If the riscified instruction has not changed it's place in
  24066. +  scheduling then recombine it into a cisc instruction.  */
  24067. +  
  24068. +extern int flag_recombine;
  24069. +
  24070. +/* These negative flags needed to override optimization
  24071. +   levels which turn them on by default */
  24072. +   
  24073. +extern int flag_no_omit_frame_pointer;
  24074. +extern int flag_no_risc;
  24075. +extern int flag_no_risc_const;
  24076. +extern int flag_no_risc_mem_dest;
  24077. +extern int flag_no_recombine;
  24078. +/* Use the first pass of the scheduler to rearrange between
  24079. +   insns that reference stack registers.  */
  24080. +   
  24081. +extern int flag_schedule_stack_reg_insns;
  24082. +
  24083. +/* Use the first pass of the scheduler to rearrange between
  24084. +   insns that reference stack registers and those that don't
  24085. +   but not amongst themselves  */
  24086. +   
  24087. +extern int flag_interleave_stack_non_stack;
  24088. +
  24089. +/* These negative flags needed to override optimization
  24090. +   levels which turn them on by default */
  24091. +   
  24092. +extern int flag_no_schedule_stack_reg_insns;
  24093. +extern int flag_no_interleave_stack_non_stack;
  24094. +
  24095. +extern int flag_sign_extension_elim;
  24096. +
  24097. +/* Try to lift memory disambiguated memory operands that are stored
  24098. +   to in a loop into a register for the duration of the loop.  */
  24099. +   
  24100. +extern int flag_lift_stores;
  24101. +
  24102. +/* As above but do the disambiguation at runtime. i.e. there
  24103. +   will be two copies of the loop, one disambiguated one not,
  24104. +   And the decision of which one to run will be made at runtime.  */
  24105. +   
  24106. +extern int flag_runtime_lift_stores;
  24107. diff -r -u -H -N gcc-2.6.3/flow.c gcc-i2.6.3/flow.c
  24108. --- gcc-2.6.3/flow.c    Thu Nov 17 12:46:04 1994
  24109. +++ gcc-i2.6.3/flow.c    Thu Feb 16 12:14:28 1995
  24110. @@ -285,14 +285,14 @@
  24111.  static HARD_REG_SET elim_reg_set;
  24112.  
  24113.  /* Forward declarations */
  24114. -static void find_basic_blocks        PROTO((rtx, rtx));
  24115. +static void find_basic_blocks        PROTO((rtx, rtx, int));
  24116.  static int uses_reg_or_mem        PROTO((rtx));
  24117.  static void mark_label_ref        PROTO((rtx, rtx, int));
  24118. -static void life_analysis        PROTO((rtx, int));
  24119. +static void life_analysis        PROTO((rtx, int, int));
  24120.  void allocate_for_life_analysis        PROTO((void));
  24121. -static void init_regset_vector        PROTO((regset *, regset, int, int));
  24122. +/* intel2 static */ void init_regset_vector        PROTO((regset *, regset, int, int));
  24123.  static void propagate_block        PROTO((regset, rtx, rtx, int, 
  24124. -                           regset, int));
  24125. +                           regset, int, int));
  24126.  static int insn_dead_p            PROTO((rtx, regset, int));
  24127.  static int libcall_dead_p        PROTO((rtx, regset, rtx, rtx));
  24128.  static void mark_set_regs        PROTO((regset, regset, rtx,
  24129. @@ -305,16 +305,27 @@
  24130.  static int try_pre_increment        PROTO((rtx, rtx, HOST_WIDE_INT));
  24131.  static rtx find_use_as_address        PROTO((rtx, rtx, HOST_WIDE_INT));
  24132.  void dump_flow_info            PROTO((FILE *));
  24133. +/* intel1 */
  24134. +static void correct_cse_mistakes ();
  24135. +static void count_reg_uses ();
  24136. +static void do_correction ();
  24137.  
  24138.  /* Find basic blocks of the current function and perform data flow analysis.
  24139.     F is the first insn of the function and NREGS the number of register numbers
  24140.     in use.  */
  24141.  
  24142.  void
  24143. +/*
  24144.  flow_analysis (f, nregs, file)
  24145. +*/
  24146. +/* intel2 - added the change_f flag to disable changes to the insns, when called
  24147. + * by memory_simplify. Don't apply any change to an insn if this flag == 0
  24148. + */
  24149. +flow_analysis (f, nregs, file, change_f)
  24150.       rtx f;
  24151.       int nregs;
  24152.       FILE *file;
  24153. +     int change_f; /* intel2 */
  24154.  {
  24155.    register rtx insn;
  24156.    register int i;
  24157. @@ -324,6 +335,14 @@
  24158.    static struct {int from, to; } eliminables[] = ELIMINABLE_REGS;
  24159.  #endif
  24160.  
  24161. +  /* intel1 */
  24162. +#ifdef SPARE_REGS
  24163. +  if (change_f && flag_opt_reg_stack)
  24164. +    {
  24165. +      nregs += SPARE_REGS;
  24166. +    }
  24167. +#endif
  24168. +
  24169.    /* Record which registers will be eliminated.  We use this in
  24170.       mark_used_regs. */
  24171.  
  24172. @@ -370,9 +389,13 @@
  24173.    /* Allocate some tables that last till end of compiling this function
  24174.       and some needed only in find_basic_blocks and life_analysis.  */
  24175.  
  24176. -  n_basic_blocks = i;
  24177. -  basic_block_head = (rtx *) oballoc (n_basic_blocks * sizeof (rtx));
  24178. -  basic_block_end = (rtx *) oballoc (n_basic_blocks * sizeof (rtx));
  24179. +  if (change_f || (n_basic_blocks!=i)) 
  24180. +  /* intel2 if change_f is 0 we may have already allocated basic blocks */
  24181. +    {
  24182. +      n_basic_blocks = i;
  24183. +      basic_block_head = (rtx *) oballoc (n_basic_blocks * sizeof (rtx));
  24184. +      basic_block_end = (rtx *) oballoc (n_basic_blocks * sizeof (rtx));
  24185. +    }
  24186.    basic_block_drops_in = (char *) alloca (n_basic_blocks);
  24187.    basic_block_loop_depth = (short *) alloca (n_basic_blocks * sizeof (short));
  24188.    uid_block_number
  24189. @@ -380,11 +403,16 @@
  24190.    uid_volatile = (char *) alloca (max_uid_for_flow + 1);
  24191.    bzero (uid_volatile, max_uid_for_flow + 1);
  24192.  
  24193. -  find_basic_blocks (f, nonlocal_label_list);
  24194. -  life_analysis (f, nregs);
  24195. +  find_basic_blocks (f, nonlocal_label_list /* intel2: */, change_f);
  24196. +  life_analysis (f, nregs /* intel2: */, change_f);
  24197.    if (file)
  24198.      dump_flow_info (file);
  24199.  
  24200. +  /* intel1 */
  24201. +  if (flag_correct_cse_mistakes && change_f)
  24202. +    {
  24203. +      correct_cse_mistakes (f, nregs, file);
  24204. +    }
  24205.    basic_block_drops_in = 0;
  24206.    uid_block_number = 0;
  24207.    basic_block_loop_depth = 0;
  24208. @@ -398,8 +426,9 @@
  24209.     NONLOCAL_LABEL_LIST is the same local variable from flow_analysis.  */
  24210.  
  24211.  static void
  24212. -find_basic_blocks (f, nonlocal_label_list)
  24213. +find_basic_blocks (f, nonlocal_label_list /* intel2: */, change_f)
  24214.       rtx f, nonlocal_label_list;
  24215. +     int change_f;/* intel2 */
  24216.  {
  24217.    register rtx insn;
  24218.    register int i;
  24219. @@ -627,7 +656,7 @@
  24220.       unreachable loops as unreachable.  */
  24221.  
  24222.        for (i = 0; i < n_basic_blocks; i++)
  24223. -    if (!block_live[i])
  24224. +    if (!block_live[i] /* intel2: */ && change_f)
  24225.        {
  24226.          insn = basic_block_head[i];
  24227.          while (1)
  24228. @@ -790,9 +819,10 @@
  24229.     regset_size and regset_bytes are also set here.  */
  24230.  
  24231.  static void
  24232. -life_analysis (f, nregs)
  24233. +life_analysis (f, nregs /* intel2: */, change_f)
  24234.       rtx f;
  24235.       int nregs;
  24236. +     int change_f;    /* intel2 */
  24237.  {
  24238.    register regset tem;
  24239.    int first_pass;
  24240. @@ -820,8 +850,14 @@
  24241.  
  24242.    max_regno = nregs;
  24243.  
  24244. -  bzero (regs_ever_live, sizeof regs_ever_live);
  24245.  
  24246. +  /* intel2 - begin */
  24247. +  /* Dont reset the regs_ever_live array if called from memory_simplify */
  24248. +  if (change_f)
  24249. +    {
  24250. +      /* intel2 - end */
  24251. +      bzero (regs_ever_live, sizeof regs_ever_live);
  24252. +    }
  24253.    /* Allocate and zero out many data structures
  24254.       that will record the data from lifetime analysis.  */
  24255.  
  24256. @@ -866,10 +902,32 @@
  24257.    for (insn = f; insn; insn = NEXT_INSN (insn))
  24258.      {
  24259.        enum rtx_code code1 = GET_CODE (insn);
  24260. -      if (code1 == CALL_INSN)
  24261. +      if (code1 == CALL_INSN /* intel2: */ && change_f)
  24262.      INSN_VOLATILE (insn) = 1;
  24263.        else if (code1 == INSN || code1 == JUMP_INSN)
  24264.      {
  24265. +        /* intel2 - begin */
  24266. +        /* if change_f is reset, i.e. we are called from memory_simplify, and
  24267. +         * therefore we would like to update the insn's REG_DEAD notes.
  24268. +         * If we find a REG_DEAD note, we remove it here.
  24269. +         */
  24270. +        if (!change_f)
  24271. +        {
  24272. +            register rtx note;
  24273. +            
  24274. +
  24275. +            for (note = REG_NOTES (insn); note; note = XEXP (note, 1))
  24276. +                if (REG_NOTE_KIND (note) == REG_DEAD
  24277. +                    || REG_NOTE_KIND (note) == REG_UNUSED)
  24278. +                    remove_note(insn, note);
  24279. +        } 
  24280. +        /* intel2 - end */
  24281. +
  24282. +
  24283. +/* intel2 - begin */
  24284. +        if (change_f)
  24285. +        {
  24286. +/* intel2 - end */
  24287.        /* Delete (in effect) any obvious no-op moves.  */
  24288.        if (GET_CODE (PATTERN (insn)) == SET
  24289.            && GET_CODE (SET_DEST (PATTERN (insn))) == REG
  24290. @@ -930,6 +988,9 @@
  24291.  #endif
  24292.             && XEXP (SET_SRC (PATTERN (insn)), 0) == stack_pointer_rtx)
  24293.          INSN_VOLATILE (insn) = 1;
  24294. +        /* intel2 - begin */
  24295. +        } /* if (change_f) */
  24296. +        /* intel2 - end */
  24297.      }
  24298.      }
  24299.  
  24300. @@ -1070,7 +1131,7 @@
  24301.                     basic_block_head[i], basic_block_end[i], 0,
  24302.                     first_pass ? basic_block_significant[i]
  24303.                     : (regset) 0,
  24304. -                   i);
  24305. +                   i/* intel2: */, change_f);
  24306.          }
  24307.  
  24308.        {
  24309. @@ -1135,7 +1196,7 @@
  24310.      {
  24311.        propagate_block (basic_block_live_at_end[i],
  24312.                 basic_block_head[i], basic_block_end[i], 1,
  24313. -               (regset) 0, i);
  24314. +               (regset) 0, i/* intel2: */, change_f);
  24315.  #ifdef USE_C_ALLOCA
  24316.        alloca (0);
  24317.  #endif
  24318. @@ -1232,7 +1293,7 @@
  24319.     SPACE is of type regset, but it is really as long as NELTS regsets.
  24320.     BYTES_PER_ELT is the number of bytes in one regset.  */
  24321.  
  24322. -static void
  24323. +/* intel2 static */ void
  24324.  init_regset_vector (vector, space, nelts, bytes_per_elt)
  24325.       regset *vector;
  24326.       regset space;
  24327. @@ -1269,13 +1330,13 @@
  24328.     BNUM is the number of the basic block.  */
  24329.  
  24330.  static void
  24331. -propagate_block (old, first, last, final, significant, bnum)
  24332. +propagate_block (old, first, last, final, significant, bnum /* intel2: */, change_f)
  24333.       register regset old;
  24334.       rtx first;
  24335.       rtx last;
  24336.       int final;
  24337.       regset significant;
  24338. -     int bnum;
  24339. +     int bnum /* intel2: */, change_f;
  24340.  {
  24341.    register rtx insn;
  24342.    rtx prev;
  24343. @@ -1319,7 +1380,7 @@
  24344.      loop_depth--;
  24345.      }
  24346.  
  24347. -  if (final)
  24348. +  if (final /* intel2: */ && change_f)
  24349.      {
  24350.        register int i, offset;
  24351.        REGSET_ELT_TYPE bit;
  24352. @@ -1402,7 +1463,7 @@
  24353.           "delete" it by turning it into a NOTE of type NOTE_INSN_DELETED.
  24354.           We could really delete it with delete_insn, but that
  24355.           can cause trouble for first or last insn in a basic block.  */
  24356. -      if (final && insn_is_dead)
  24357. +      if (final /* intel2: */ && change_f && insn_is_dead)
  24358.          {
  24359.            PUT_CODE (insn, NOTE);
  24360.            NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
  24361. @@ -1444,7 +1505,7 @@
  24362.        {
  24363.          register rtx x = PATTERN (insn);
  24364.          /* Does this instruction increment or decrement a register?  */
  24365. -        if (final && GET_CODE (x) == SET
  24366. +        if (final /* intel2: */ && change_f && GET_CODE (x) == SET
  24367.          && GET_CODE (SET_DEST (x)) == REG
  24368.          && (GET_CODE (SET_SRC (x)) == PLUS
  24369.              || GET_CODE (SET_SRC (x)) == MINUS)
  24370. @@ -1488,7 +1549,7 @@
  24371.           live.  */
  24372.  
  24373.            mark_set_regs (old, dead, PATTERN (insn),
  24374. -                 final ? insn : NULL_RTX, significant);
  24375. +                 (final /* intel2: */ && change_f) ? insn : NULL_RTX, significant);
  24376.  
  24377.            /* If an insn doesn't use CC0, it becomes dead since we 
  24378.           assume that every insn clobbers it.  So show it dead here;
  24379. @@ -1552,7 +1613,7 @@
  24380.            old[i] |= live[i];
  24381.          }
  24382.  
  24383. -          if (GET_CODE (insn) == CALL_INSN && final)
  24384. +          if (GET_CODE (insn) == CALL_INSN && final /* intel2: */ && change_f)
  24385.          {
  24386.            /* Any regs live at the time of a call instruction
  24387.               must not go in a register clobbered by calls.
  24388. @@ -1570,7 +1631,7 @@
  24389.           into MAXLIVE and REGS_SOMETIMES_LIVE.
  24390.           Also update counts of how many insns each reg is live at.  */
  24391.  
  24392. -      if (final)
  24393. +      if (final /* intel2: */ && change_f)
  24394.          {
  24395.            for (i = 0; i < regset_size; i++)
  24396.          {
  24397. @@ -2776,6 +2837,11 @@
  24398.  {
  24399.    register int i;
  24400.    static char *reg_class_names[] = REG_CLASS_NAMES;
  24401. +  /* intel1 */
  24402. +#ifdef SPARE_REGS
  24403. +  int max_regno;
  24404. +  max_regno = max_reg_num();
  24405. +#endif
  24406.  
  24407.    fprintf (file, "%d registers.\n", max_regno);
  24408.  
  24409. @@ -2852,3 +2918,594 @@
  24410.      }
  24411.    fprintf (file, "\n");
  24412.  }
  24413. +
  24414. +/* intel1 */
  24415. +/* Information about registers */
  24416. +struct regopt_info
  24417. +{
  24418. +  rtx insn_set;            /* If non NULL then the insn that loads the register
  24419. +                          with it's current value */
  24420. +  int num_uses_copied;        /* To count if the reg setter has been copied to
  24421. +                          each of the uses */
  24422. +  char copied_for_src;          /* Set per insn if the insn_set has been copied
  24423. +                          as a result of analysis on the src */
  24424. +};
  24425. +static struct regopt_info *rinfo;
  24426. +
  24427. +/* Count the number of new sets of the register */
  24428. +static int *my_reg_n_sets;
  24429. +
  24430. +/* Count the number of times a register is used in an insn */
  24431. +static int *regs_in_body;
  24432. +
  24433. +/* Count the number of times a register is used in a function */
  24434. +static int *reg_n_uses;
  24435. +
  24436. +/* Copied from sched.c
  24437. +   Return the INSN_LIST containing INSN in LIST, or NULL
  24438. +   if LIST does not contain INSN.  */
  24439. +#ifndef __GNUC__
  24440. +#define __inline
  24441. +#endif
  24442. +
  24443. +__inline static rtx
  24444. +find_insn_list (insn, list)
  24445. +     rtx insn;
  24446. +     rtx list;
  24447. +{
  24448. +  while (list)
  24449. +    {
  24450. +      if (XEXP (list, 0) == insn)
  24451. +    return list;
  24452. +      list = XEXP (list, 1);
  24453. +    }
  24454. +  return 0;
  24455. +}
  24456. +
  24457. +/*
  24458. +  Sometimes cse is done where it is detremental. Consider register 23
  24459. +  in the following insn stream:
  24460. +
  24461. +(insn 18 65 82 (set (reg/v:SI 23)
  24462. +        (plus:SI (reg/v:SI 22)
  24463. +            (const_int -4501))) 32 {movsi+1} (nil)
  24464. +    (nil))
  24465. +
  24466. +(insn 82 18 83 (set (cc0)
  24467. +        (compare:CC (reg/v:SI 22)
  24468. +            (const_int 4500))) 6 {cmpsi_cc} (nil)
  24469. +    (nil))
  24470. +
  24471. +(jump_insn 83 82 90 (set (pc)
  24472. +        (if_then_else (gt (cc0)
  24473. +                (const_int 0))
  24474. +            (label_ref 63)
  24475. +            (pc))) 185 {bgt+1} (nil)
  24476. +    (nil))
  24477. +
  24478. +(note 90 83 91 "" NOTE_INSN_DELETED)
  24479. +
  24480. +(insn 91 90 93 (set (reg:SI 32)
  24481. +        (ashift:SI (reg/v:SI 23)
  24482. +            (const_int 2))) 136 {ashlsi3} (nil)
  24483. +    (expr_list:REG_DEAD (reg/v:SI 23)
  24484. +        (nil)))
  24485. +
  24486. +  reg 23 appears in insn 91 as a result of cse, before cse insn 90
  24487. +  and 91 were:
  24488. +
  24489. +(insn 90 83 91 (set (reg:SI 33)
  24490. +        (plus:SI (reg/v:SI 22)
  24491. +            (const_int -4501))) -1 (nil)
  24492. +    (nil))
  24493. +
  24494. +(insn 91 90 93 (set (reg:SI 34)
  24495. +        (ashift:SI (reg:SI 33)
  24496. +            (const_int 2))) -1 (nil)
  24497. +    (nil))
  24498. +
  24499. +  since reg 23 does not appear anywhere else in the rtl and it is dead
  24500. +  at insn 91 it would be better to move insn 18 to after insn 90, thus
  24501. +  allowing the combiner to combine insn 18 into 91.
  24502. +
  24503. +*/
  24504. +static void
  24505. +correct_cse_mistakes (f, cur_max_reg, dump_file)
  24506. +     rtx f;
  24507. +     int cur_max_reg;
  24508. +     FILE *dump_file;
  24509. +{
  24510. +  rtx insn, src, dest, insn_set, note;
  24511. +  struct regs_mentioned *header, *a_reg_used;
  24512. +  int num_regs, recog_ok, i, regno;
  24513. +  char *storage1, *storage2;
  24514. +
  24515. +  rinfo =
  24516. +    (struct regopt_info *) alloca ((cur_max_reg) * sizeof (struct regopt_info));
  24517. +  bzero (rinfo, (cur_max_reg) * sizeof (struct regopt_info));
  24518. +  reg_n_uses = (int *) alloca ((cur_max_reg) * sizeof (int));
  24519. +  bzero (reg_n_uses, (cur_max_reg) * sizeof (int));
  24520. +  regs_in_body = (int *) alloca ((cur_max_reg) * sizeof (int));
  24521. +  bzero (regs_in_body, (cur_max_reg) * sizeof (int));
  24522. +  my_reg_n_sets = (int *) alloca ((cur_max_reg) * sizeof (int));
  24523. +  bzero (my_reg_n_sets, (cur_max_reg) * sizeof (int));
  24524. +
  24525. +  if (dump_file)
  24526. +    fprintf (dump_file, "\ndoing correct_cse_mistakes:\n\n");
  24527. +  insn = f;
  24528. +  while (insn)
  24529. +    {
  24530. +      if (GET_CODE (insn) == INSN || GET_CODE (insn) == JUMP_INSN
  24531. +      || GET_CODE (insn) == CALL_INSN)
  24532. +    {
  24533. +      count_reg_uses (PATTERN (insn), reg_n_uses);
  24534. +    }
  24535. +      insn = NEXT_INSN (insn);
  24536. +    }
  24537. +  insn = f;
  24538. +  while (insn)
  24539. +    {
  24540. +      switch (GET_CODE (insn))
  24541. +    {
  24542. +
  24543. +    case CALL_INSN:
  24544. +      /* Don't want to change reg_n_calls_crosses */
  24545. +      bzero (rinfo, cur_max_reg * sizeof (struct regopt_info));
  24546. +      break;
  24547. +
  24548. +    case CODE_LABEL:
  24549. +    case BARRIER:
  24550. +      /* forget everything */
  24551. +      bzero (rinfo, cur_max_reg * sizeof (struct regopt_info));
  24552. +      break;
  24553. +
  24554. +    case INSN:
  24555. +          if (GET_CODE (PATTERN (insn)) == CLOBBER)
  24556. +            {
  24557. +          if (GET_CODE (SET_DEST (PATTERN (insn))) == REG)
  24558. +        {
  24559. +          rinfo[ REGNO (SET_DEST (PATTERN (insn)))].insn_set = NULL;
  24560. +          for (i = 0; i < cur_max_reg; i++)
  24561. +            {
  24562. +              if (rinfo[i].insn_set
  24563. +              && reg_overlap_mentioned_p (SET_DEST (PATTERN (insn)), 
  24564. +                    SET_SRC (PATTERN (rinfo[i].insn_set)))
  24565. +            )
  24566. +            {    /* current value of reg dest overwritten */
  24567. +              rinfo[i].insn_set = NULL;
  24568. +            }
  24569. +            }
  24570. +        }
  24571. +            }
  24572. +      else if (GET_CODE (PATTERN (insn)) == PARALLEL)
  24573. +        {
  24574. +          for (i = 0; i < XVECLEN (PATTERN (insn), 0); i++)
  24575. +        {
  24576. +          rtx cur_rtx;
  24577. +          cur_rtx = XVECEXP (PATTERN (insn), 0, i);
  24578. +          if ((GET_CODE (cur_rtx) == SET  
  24579. +               || GET_CODE (cur_rtx) == CLOBBER)
  24580. +              && GET_CODE (SET_DEST (cur_rtx)) == REG)
  24581. +            {
  24582. +              rinfo[ REGNO (SET_DEST (cur_rtx))].insn_set = NULL;
  24583. +              for (i = 0; i < cur_max_reg; i++)
  24584. +                {
  24585. +                  if (rinfo[i].insn_set
  24586. +                  && reg_overlap_mentioned_p (SET_DEST (cur_rtx), 
  24587. +                         SET_SRC (PATTERN (rinfo[i].insn_set)))
  24588. +                )
  24589. +                {    /* current value of reg dest overwritten */
  24590. +                  rinfo[i].insn_set = NULL;
  24591. +                }
  24592. +                }
  24593. +            }
  24594. +          if (!(GET_CODE (cur_rtx) == SET  
  24595. +               || GET_CODE (cur_rtx) == CLOBBER
  24596. +               || GET_CODE (cur_rtx) == USE))
  24597. +                bzero (rinfo, cur_max_reg * sizeof (struct regopt_info));
  24598. +        }
  24599. +        }
  24600. +      else if (GET_CODE (PATTERN (insn)) == SET)
  24601. +        {
  24602. +          dest = SET_DEST (PATTERN (insn));
  24603. +          src = SET_SRC (PATTERN (insn));
  24604. +          if (GET_CODE (src) == REG)
  24605. +        {
  24606. +          i = REGNO (src);
  24607. +                  if (rinfo[i].insn_set
  24608. +                      && BLOCK_NUM (insn) == BLOCK_NUM (rinfo[i].insn_set))
  24609. +                    { /* Since insn_set cannot be deleted stop optimization */
  24610. +                      rinfo[i].insn_set = NULL;
  24611. +                    }
  24612. +                }
  24613. +          else /* (GET_CODE (src) != REG) */
  24614. +        {
  24615. +              count_reg_uses (src, regs_in_body);
  24616. +          for (i = 0; i < cur_max_reg; i++)
  24617. +            {
  24618. +                      if (rinfo[i].insn_set
  24619. +                          && regs_in_body[i]
  24620. +                          && BLOCK_NUM (insn) == BLOCK_NUM (rinfo[i].insn_set))
  24621. +                        { /* Since insn_set cannot be deleted stop optimization */
  24622. +                          rinfo[i].insn_set = NULL;
  24623. +                        }
  24624. +              if (reg_n_sets[i] == 1
  24625. +                  && regs_in_body[i]
  24626. +              && rinfo[i].insn_set
  24627. +              && GET_CODE (rinfo[i].insn_set) == INSN)
  24628. +            {    
  24629. +              if (find_regno_note (insn, REG_DEAD, i))
  24630. +                {
  24631. +                  /* copy insn_set just prior to insn */
  24632. +                  do_correction (i, insn, dump_file);
  24633. +                }
  24634. +              else
  24635. +                { /* A use that is not dead - stop.  */
  24636. +                              rinfo[i].insn_set = NULL;
  24637. +                }
  24638. +            }
  24639. +            }
  24640. +          bzero (regs_in_body, cur_max_reg * sizeof (int));
  24641. +        }
  24642. +          if (GET_CODE (dest) != REG)
  24643. +        {
  24644. +          count_reg_uses (dest, regs_in_body);
  24645. +          for (i = 0; i < cur_max_reg; i++)
  24646. +            {
  24647. +                      if (rinfo[i].insn_set
  24648. +                          && regs_in_body[i]
  24649. +                          && BLOCK_NUM (insn) == BLOCK_NUM (rinfo[i].insn_set))
  24650. +                        { /* Since insn_set cannot be deleted stop optimization */
  24651. +                          rinfo[i].insn_set = NULL;
  24652. +                        }
  24653. +              if (reg_n_sets[i] == 1
  24654. +                  && !rinfo[i].copied_for_src
  24655. +                  && regs_in_body[i]
  24656. +              && rinfo[i].insn_set
  24657. +              && GET_CODE (rinfo[i].insn_set) == INSN)
  24658. +            {
  24659. +              if (find_regno_note (insn, REG_DEAD, i))
  24660. +                {
  24661. +                  /* copy insn_set just prior to insn */
  24662. +                  do_correction (i, insn, dump_file);
  24663. +                }
  24664. +              else
  24665. +                { /* A use that is not dead - stop.  */
  24666. +                              rinfo[i].insn_set = NULL;
  24667. +                }
  24668. +
  24669. +            }
  24670. +            }
  24671. +          bzero (regs_in_body, cur_max_reg * sizeof (int));
  24672. +        }
  24673. +          for (i = 0; i < cur_max_reg; i++)
  24674. +        {
  24675. +          rinfo[i].copied_for_src = 0;
  24676. +        }
  24677. +          if (GET_CODE (dest) == REG)
  24678. +        {
  24679. +          for (i = 0; i < cur_max_reg; i++)
  24680. +            {
  24681. +              if (rinfo[i].insn_set
  24682. +              && reg_overlap_mentioned_p (dest, SET_SRC (PATTERN (rinfo[i].insn_set)))
  24683. +            )
  24684. +            {    /* current value of reg dest overwritten */
  24685. +              rinfo[i].insn_set = NULL;
  24686. +            }
  24687. +            }
  24688. +          if (reg_overlap_mentioned_p (dest, SET_SRC (PATTERN (insn))))
  24689. +            {
  24690. +              rinfo[REGNO (dest)].insn_set = NULL;
  24691. +            }
  24692. +          else
  24693. +            {
  24694. +              if ((GET_CODE (SET_SRC (PATTERN (insn))) == ASHIFT
  24695. +                   && GET_CODE (XEXP (SET_SRC (PATTERN (insn)), 0)) == REG
  24696. +               && GET_CODE (XEXP (SET_SRC (PATTERN (insn)), 1)) == CONST_INT)
  24697. +              || (GET_CODE (SET_SRC (PATTERN (insn))) == PLUS
  24698. +                      && GET_CODE (XEXP (SET_SRC (PATTERN (insn)), 0)) == REG
  24699. +                  && GET_CODE (XEXP (SET_SRC (PATTERN (insn)), 1)) == SYMBOL_REF)
  24700. +              || (GET_CODE (SET_SRC (PATTERN (insn))) == PLUS
  24701. +                  && GET_CODE (XEXP (SET_SRC (PATTERN (insn)), 0)) == MULT
  24702. +                  && GET_CODE (XEXP (XEXP (SET_SRC (PATTERN (insn)), 0), 0)) == REG
  24703. +                  && GET_CODE (XEXP (XEXP (SET_SRC (PATTERN (insn)), 0), 1)) == CONST_INT
  24704. +                  && GET_CODE (XEXP (SET_SRC (PATTERN (insn)), 1)) == CONST_INT)
  24705. +              || (GET_CODE (SET_SRC (PATTERN (insn))) == PLUS
  24706. +                      && GET_CODE (XEXP (SET_SRC (PATTERN (insn)), 0)) == REG
  24707. +                  && GET_CODE (XEXP (SET_SRC (PATTERN (insn)), 1)) == CONST_INT)
  24708. +            )
  24709. +            {    /* these may be combinable */
  24710. +              if (REG_NOTES (insn) == NULL)
  24711. +                { /* Don't want to mess around with
  24712. +                     the REG_NOTES.  */
  24713. +                  rinfo[REGNO (dest)].insn_set = insn;
  24714. +                }
  24715. +            }
  24716. +              else
  24717. +            {
  24718. +              rinfo[REGNO (dest)].insn_set = NULL;
  24719. +            }
  24720. +            }
  24721. +        }
  24722. +        }
  24723. +      else if (GET_CODE (PATTERN (insn)) == USE)
  24724. +        ; /* nothing */
  24725. +      else 
  24726. +        {
  24727. +          bzero (rinfo, cur_max_reg * sizeof (struct regopt_info));
  24728. +        }
  24729. +      /* A register that dies cannot be used further in a substitution.  */
  24730. +          for (note = REG_NOTES (insn); note; note = XEXP (note, 1))
  24731. +        if (REG_NOTE_KIND (note) == REG_DEAD
  24732. +        && GET_CODE (XEXP (note, 0)) == REG)
  24733. +          {
  24734. +        for (i = 0; i < cur_max_reg; i++)
  24735. +          {
  24736. +            if (rinfo[i].insn_set
  24737. +            && reg_overlap_mentioned_p (XEXP (note, 0), 
  24738. +                  SET_SRC (PATTERN (rinfo[i].insn_set)))
  24739. +               )
  24740. +              {    
  24741. +              rinfo[i].insn_set = NULL;
  24742. +                  }
  24743. +          }    
  24744. +          }
  24745. +
  24746. +      break;
  24747. +
  24748. +    case JUMP_INSN:
  24749. +    case NOTE:
  24750. +      break;
  24751. +
  24752. +    default:
  24753. +      bzero (rinfo, cur_max_reg * sizeof (struct regopt_info));
  24754. +      break;
  24755. +    }
  24756. +      insn = NEXT_INSN (insn);
  24757. +    }
  24758. +  for (i = 0; i < cur_max_reg; i++)
  24759. +    reg_n_sets[i] += my_reg_n_sets[i];
  24760. +}
  24761. +
  24762. +/*
  24763. +  Increment the reg_n_uses element for each register mentioned in body
  24764. +  and for each time it is mentioned
  24765. +*/
  24766. +static void
  24767. +count_reg_uses (body, where_to_count)
  24768. +     rtx body;
  24769. +     int *where_to_count;
  24770. +{
  24771. +  int i, j, ret_val = 0;
  24772. +  char *fmt;
  24773. +  register RTX_CODE code = GET_CODE (body);
  24774. +
  24775. +  if (code == CLOBBER)
  24776. +    return;
  24777. +  else if (code == REG)
  24778. +    where_to_count[REGNO (body)]++;
  24779. +  else if (code == SET)
  24780. +    {
  24781. +      if (GET_CODE (SET_DEST (body)) != REG)
  24782. +    {
  24783. +      count_reg_uses (SET_DEST (body), where_to_count);
  24784. +    }
  24785. +      count_reg_uses (SET_SRC (body), where_to_count);
  24786. +    }
  24787. +  else
  24788. +    {
  24789. +      fmt = GET_RTX_FORMAT (code);
  24790. +      for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
  24791. +    if (fmt[i] == 'e')
  24792. +      count_reg_uses (XEXP (body, i), where_to_count);
  24793. +    else if (fmt[i] == 'E' || fmt[i] == 'V')
  24794. +      {
  24795. +        for (j = 0; j < XVECLEN (body, i); j++)
  24796. +          count_reg_uses (XVECEXP (body, i, j), where_to_count);
  24797. +      }
  24798. +    }
  24799. +}
  24800. +
  24801. +/*
  24802. +   Copy the insn that sets regnum to just before insn.
  24803. +   If that insn has been copied to in front of each of
  24804. +   it's uses then delete it
  24805. +*/
  24806. +static void
  24807. +do_correction (regnum, insn, dump_file)
  24808. +     int regnum;
  24809. +     rtx insn;
  24810. +     FILE * dump_file;
  24811. +{
  24812. +  rtx insn_set;
  24813. +  int i;
  24814. +  
  24815. +  insn_set
  24816. +    = rinfo[regnum].insn_set;
  24817. +  if (BLOCK_NUM (insn) == BLOCK_NUM (insn_set))
  24818. +    { /* Since insn_set cannot be deleted stop optimization */
  24819. +      rinfo[regnum].insn_set = NULL;
  24820. +      return;
  24821. +    }
  24822. +  emit_insn_before (
  24823. +             copy_rtx (PATTERN (insn_set)),
  24824. +             insn);
  24825. +   
  24826. +  if (REG_NOTES (insn_set))
  24827. +    {
  24828. +      REG_NOTES (PREV_INSN (insn))
  24829. +    = copy_rtx (REG_NOTES (insn_set));
  24830. +    }
  24831. +  LOG_LINKS (insn)
  24832. +    = gen_rtx (INSN_LIST, VOIDmode, PREV_INSN (insn),
  24833. +           LOG_LINKS (insn));
  24834. +  if (find_insn_list (insn_set,
  24835. +              LOG_LINKS (insn)))
  24836. +    remove_dependence (insn, insn_set);
  24837. +  rinfo[regnum].num_uses_copied += regs_in_body[regnum];
  24838. +  my_reg_n_sets[regnum]++;
  24839. +  if (dump_file)
  24840. +    {
  24841. +      fprintf (dump_file,
  24842. +           " copy insn %d to before insn %d\n",
  24843. +           INSN_UID (insn_set), INSN_UID (insn));
  24844. +    }
  24845. +  if (rinfo[regnum].num_uses_copied == reg_n_uses[regnum])
  24846. +    {    /* insn_set is no longer relevant - delete it */
  24847. +      rinfo[regnum].insn_set = NULL;
  24848. +      PUT_CODE (insn_set, NOTE);
  24849. +      NOTE_LINE_NUMBER (insn_set) = NOTE_INSN_DELETED;
  24850. +      NOTE_SOURCE_FILE (insn_set) = 0;
  24851. +      if (dump_file)
  24852. +    {
  24853. +      fprintf (dump_file,
  24854. +           " delete insn %d \n",
  24855. +           INSN_UID (insn_set));
  24856. +    }
  24857. +      reg_n_sets[regnum]--;
  24858. +    }
  24859. +  /* If insn was a basic block head then now the copy is
  24860. +     the basic block head.  */
  24861. +  for (i = 0; i < n_basic_blocks; i++)
  24862. +    {
  24863. +      if (basic_block_head[i] == insn)
  24864. +        {
  24865. +          basic_block_head[i] = PREV_INSN (insn);
  24866. +          break;
  24867. +        }
  24868. +    }
  24869. +  
  24870. +}
  24871. +
  24872. +/* intel2 */
  24873. +/* Call flow_analysis without changing insns, and if save_pseudo is set, saves
  24874. +   the basic_block_live_at_start information, concerning the pseudo registers,
  24875. +   and restores it after flow_analysis. */
  24876. +
  24877. +void
  24878. +hard_reg_flow_analysis (f, file, save_pseudo)
  24879. +     rtx f;
  24880. +     FILE *file;
  24881. +     int save_pseudo;
  24882. +{
  24883. +  int limit;
  24884. +  register int block, regno;
  24885. +
  24886. +  /* Element N is a regset describing the registers live
  24887. +     at the start of basic block N, as was saved before the call to
  24888. +     flow_analysis. We use it to restore the contents of the pseudo registers,
  24889. +     needed by other phases. */
  24890. +    
  24891. +  regset *basic_block_live_at_start_saved;
  24892. +    
  24893. +#if 0
  24894. +  register int j;
  24895. +#endif
  24896. +
  24897. +  if (save_pseudo)
  24898. +    {
  24899. +      int regset_size = ((max_regno + REGSET_ELT_BITS - 1) / REGSET_ELT_BITS);
  24900. +      int regset_bytes = regset_size * sizeof (*(regset)0);
  24901. +      basic_block_live_at_start_saved =
  24902. +                 (regset *) alloca (n_basic_blocks * sizeof (regset));
  24903. +      /* copy basic_block_live_at_start to basic_block_live_at_start_saved */
  24904. +      for (block = 0; block < n_basic_blocks; block++)
  24905. +        {
  24906. +          basic_block_live_at_start_saved[block] = (regset) alloca (regset_bytes);
  24907. +          bcopy (basic_block_live_at_start[block],
  24908. +                 basic_block_live_at_start_saved[block],
  24909. +                 regset_bytes);
  24910. +        }
  24911. +
  24912. +#if 0
  24913. +      /* Check if copy is o.k. */
  24914. +      if (file)
  24915. +        {
  24916. +          fprintf (file, "Pseudo registers live at start:\n");
  24917. +
  24918. +          for (block = 0; block < n_basic_blocks; block++)
  24919. +        {
  24920. +          fprintf (file, "\nBlock no. %d original:", block);
  24921. +
  24922. +          for (regno = FIRST_PSEUDO_REGISTER; regno < max_regno; regno++)
  24923. +            {
  24924. +              register int offset = regno / REGSET_ELT_BITS;
  24925. +              register REGSET_ELT_TYPE bit
  24926. +                       = (REGSET_ELT_TYPE) 1 << (regno % REGSET_ELT_BITS);
  24927. +              if ((basic_block_live_at_start_saved[block][offset] & bit)
  24928. +                  ^ (basic_block_live_at_start[block][offset] & bit))
  24929. +                {
  24930. +              fprintf (file, "\nERROR: differnt values in regsets!\n");
  24931. +              fprintf (file,
  24932. +                   "original: %d, saved: %d\n",
  24933. +                   basic_block_live_at_start[block][offset],
  24934. +                   basic_block_live_at_start_saved[block][offset]);
  24935. +                  abort ();
  24936. +                }
  24937. +              if (basic_block_live_at_start[block][offset] & bit)
  24938. +                fprintf (file, " %d", regno);
  24939. +            }
  24940. +          fprintf (file, "\nSaved:");
  24941. +          for (regno = FIRST_PSEUDO_REGISTER; regno < max_regno; regno++)
  24942. +            {
  24943. +              register int offset = regno / REGSET_ELT_BITS;
  24944. +              register REGSET_ELT_TYPE bit
  24945. +                       = (REGSET_ELT_TYPE) 1 << (regno % REGSET_ELT_BITS);
  24946. +
  24947. +              if (basic_block_live_at_start_saved[block][offset] & bit)
  24948. +                fprintf (file, " %d", regno);
  24949. +            }
  24950. +          fprintf (file, "\n");
  24951. +            }  /* for (block = 0; block < n_basic_blocks; block++) */
  24952. +        }  /* if (file) */
  24953. +#endif
  24954. +    }  /* if (save_pseudo) */
  24955. +
  24956. +  limit = max_reg_num ();
  24957. +
  24958. +  /* Do control and data flow analysis, and write the results to the dump
  24959. +   * file, if dump wanted.
  24960. +   */
  24961. +  flow_analysis (f, limit, file, 0 /* do not allow a change to the insns */ );
  24962. +
  24963. +  if (save_pseudo)
  24964. +    {
  24965. +      /* restore the contents of pseudo registers if basic_block_live_at_start */
  24966. +      for (block = 0; block < n_basic_blocks; block++)
  24967. +        {
  24968. +          for (regno = FIRST_PSEUDO_REGISTER; regno < max_regno; regno++)
  24969. +            {
  24970. +              register int offset = regno / REGSET_ELT_BITS;
  24971. +              register REGSET_ELT_TYPE bit
  24972. +                       = (REGSET_ELT_TYPE) 1 << (regno % REGSET_ELT_BITS);
  24973. +
  24974. +          if (basic_block_live_at_start_saved[block][offset] & bit)
  24975. +            basic_block_live_at_start[block][offset] |= bit;
  24976. +          else
  24977. +            basic_block_live_at_start[block][offset] &= ~bit;
  24978. +            }
  24979. +        }
  24980. +
  24981. +#if 0
  24982. +      /* Check if copy is o.k. */
  24983. +      if (file)
  24984. +        {
  24985. +          fprintf (file, "Pseudo registers live at start - restored :\n");
  24986. +
  24987. +          for (block = 0; block < n_basic_blocks; block++)
  24988. +        {
  24989. +          fprintf (file, "Block no. %d:", block);
  24990. +          for (regno = FIRST_PSEUDO_REGISTER; regno < max_regno; regno++)
  24991. +            {
  24992. +              register int offset = regno / REGSET_ELT_BITS;
  24993. +              register REGSET_ELT_TYPE bit
  24994. +                       = (REGSET_ELT_TYPE) 1 << (regno % REGSET_ELT_BITS);
  24995. +              if (basic_block_live_at_start[block][offset] & bit)
  24996. +                fprintf (file, " %d", regno);
  24997. +            }
  24998. +          fprintf (file, "\n");
  24999. +            }
  25000. +        }
  25001. +#endif
  25002. +    }  /* if (save_pseudo) */
  25003. +}  /* hard_reg_flow_analysis (f, file, save_pseudo) */
  25004. diff -r -u -H -N gcc-2.6.3/fold-const.c gcc-i2.6.3/fold-const.c
  25005. --- gcc-2.6.3/fold-const.c    Wed Nov 30 19:03:17 1994
  25006. +++ gcc-i2.6.3/fold-const.c    Wed Feb 15 23:25:35 1995
  25007. @@ -3547,7 +3547,12 @@
  25008.      return fold (build (MINUS_EXPR, type, arg0, TREE_OPERAND (arg1, 0)));
  25009.        else if (! FLOAT_TYPE_P (type))
  25010.      {
  25011. -      if (integer_zerop (arg1))
  25012. +      if (integer_zerop (arg1)
  25013. +          /* intel1 if it is pointer_type then removing the + 0 here
  25014. +             will cause references to array[0] not to be marked
  25015. +             as MEM_IN_STRUCT_P.  So just leave the + 0 here - it
  25016. +             will be removed when the tree is made into rtl anyway.  */
  25017. +          && TREE_CODE (TREE_TYPE (arg0)) != POINTER_TYPE)
  25018.          return non_lvalue (convert (type, arg0));
  25019.  
  25020.        /* If we are adding two BIT_AND_EXPR's, both of which are and'ing
  25021. @@ -3914,6 +3919,31 @@
  25022.      case FLOOR_DIV_EXPR:
  25023.      case CEIL_DIV_EXPR:
  25024.      case EXACT_DIV_EXPR:
  25025. +   /* intel1 - implemet x/C where c is floating point and a power of two
  25026. +              as x*(1/C)
  25027. +   */
  25028. +#ifndef REAL_IS_NOT_DOUBLE
  25029. +      if (HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT
  25030. +         && TREE_CODE (t) == RDIV_EXPR
  25031. +         && TREE_CODE (TREE_TYPE (t)) == REAL_TYPE
  25032. +         && TYPE_NAME (TREE_TYPE (t))
  25033. +         && TREE_CODE (TYPE_NAME TREE_TYPE (t)) == TYPE_DECL
  25034. +         && TREE_CODE (TREE_OPERAND (t,  1)) == REAL_CST
  25035. +         && TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 1))) == REAL_TYPE
  25036. +         && TYPE_NAME (TREE_TYPE (TREE_OPERAND (t, 1)))
  25037. +         && TREE_CODE (TYPE_NAME (TREE_TYPE (TREE_OPERAND(t, 1))))== TYPE_DE CL
  25038. +         && TREE_REAL_CST (TREE_OPERAND (t, 1)) >= 2.0
  25039. +         && TREE_REAL_CST (TREE_OPERAND (t, 1))
  25040. +          ==(double)(REAL_VALUE_UNSIGNED_FIX(TREE_REAL_CST(TREE_OPERAND(t, 1))))
  25041. +          &&exact_log2(REAL_VALUE_UNSIGNED_FIX(TREE_REAL_CST(TREE_OPERAND(t,1)))) != -1
  25042. +         )
  25043. +        {
  25044. +          TREE_SET_CODE (t, MULT_EXPR);
  25045. +          code = TREE_CODE (t);
  25046. +          TREE_REAL_CST (TREE_OPERAND (t, 1))
  25047. +            = 1.0 / TREE_REAL_CST (TREE_OPERAND (t, 1));
  25048. +        }
  25049. +#endif
  25050.        if (integer_onep (arg1))
  25051.      return non_lvalue (convert (type, arg0));
  25052.        if (integer_zerop (arg1))
  25053. diff -r -u -H -N gcc-2.6.3/gcc.aux gcc-i2.6.3/gcc.aux
  25054. --- gcc-2.6.3/gcc.aux    Fri Nov 11 18:51:12 1994
  25055. +++ gcc-i2.6.3/gcc.aux    Thu Jul 14 22:14:35 1994
  25056. @@ -4,678 +4,672 @@
  25057.  'xrdef {Contributors-title}{Contributors to GNU CC}
  25058.  'xrdef {Contributors-pg}{9}
  25059.  'xrdef {Contributors-snt}{}
  25060. -'xrdef {Funding-title}{Funding Free Software}
  25061. -'xrdef {Funding-pg}{11}
  25062. -'xrdef {Funding-snt}{Chapter'tie1}
  25063.  'xrdef {Look and Feel-title}{Protect Your Freedom---Fight ``Look And Feel''}
  25064. -'xrdef {Look and Feel-pg}{13}
  25065. -'xrdef {Look and Feel-snt}{Chapter'tie2}
  25066. +'xrdef {Look and Feel-pg}{11}
  25067. +'xrdef {Look and Feel-snt}{Chapter'tie1}
  25068.  'xrdef {G++ and GCC-title}{Compile C, C++, or Objective C}
  25069. -'xrdef {G++ and GCC-pg}{17}
  25070. -'xrdef {G++ and GCC-snt}{Chapter'tie3}
  25071. +'xrdef {G++ and GCC-pg}{15}
  25072. +'xrdef {G++ and GCC-snt}{Chapter'tie2}
  25073.  'xrdef {Invoking GCC-title}{GNU CC Command Options}
  25074. -'xrdef {Invoking GCC-pg}{19}
  25075. -'xrdef {Invoking GCC-snt}{Chapter'tie4}
  25076. +'xrdef {Invoking GCC-pg}{17}
  25077. +'xrdef {Invoking GCC-snt}{Chapter'tie3}
  25078.  'xrdef {Option Summary-title}{Option Summary}
  25079. -'xrdef {Option Summary-pg}{19}
  25080. -'xrdef {Option Summary-snt}{Section'tie4.1}
  25081. +'xrdef {Option Summary-pg}{17}
  25082. +'xrdef {Option Summary-snt}{Section'tie3.1}
  25083.  'xrdef {Overall Options-title}{Options Controlling the Kind of Output}
  25084. -'xrdef {Overall Options-pg}{24}
  25085. -'xrdef {Overall Options-snt}{Section'tie4.2}
  25086. +'xrdef {Overall Options-pg}{22}
  25087. +'xrdef {Overall Options-snt}{Section'tie3.2}
  25088.  'xrdef {Invoking G++-title}{Compiling C++ Programs}
  25089. -'xrdef {Invoking G++-pg}{26}
  25090. -'xrdef {Invoking G++-snt}{Section'tie4.3}
  25091. +'xrdef {Invoking G++-pg}{24}
  25092. +'xrdef {Invoking G++-snt}{Section'tie3.3}
  25093.  'xrdef {C Dialect Options-title}{Options Controlling C Dialect}
  25094. -'xrdef {C Dialect Options-pg}{27}
  25095. -'xrdef {C Dialect Options-snt}{Section'tie4.4}
  25096. +'xrdef {C Dialect Options-pg}{25}
  25097. +'xrdef {C Dialect Options-snt}{Section'tie3.4}
  25098.  'xrdef {C++ Dialect Options-title}{Options Controlling C++ Dialect}
  25099. -'xrdef {C++ Dialect Options-pg}{30}
  25100. -'xrdef {C++ Dialect Options-snt}{Section'tie4.5}
  25101. +'xrdef {C++ Dialect Options-pg}{28}
  25102. +'xrdef {C++ Dialect Options-snt}{Section'tie3.5}
  25103.  'xrdef {Warning Options-title}{Options to Request or Suppress Warnings}
  25104. -'xrdef {Warning Options-pg}{34}
  25105. -'xrdef {Warning Options-snt}{Section'tie4.6}
  25106. +'xrdef {Warning Options-pg}{32}
  25107. +'xrdef {Warning Options-snt}{Section'tie3.6}
  25108.  'xrdef {Debugging Options-title}{Options for Debugging Your Program or GNU CC}
  25109. -'xrdef {Debugging Options-pg}{41}
  25110. -'xrdef {Debugging Options-snt}{Section'tie4.7}
  25111. +'xrdef {Debugging Options-pg}{37}
  25112. +'xrdef {Debugging Options-snt}{Section'tie3.7}
  25113.  'xrdef {Optimize Options-title}{Options That Control Optimization}
  25114. -'xrdef {Optimize Options-pg}{44}
  25115. -'xrdef {Optimize Options-snt}{Section'tie4.8}
  25116. +'xrdef {Optimize Options-pg}{41}
  25117. +'xrdef {Optimize Options-snt}{Section'tie3.8}
  25118.  'xrdef {Preprocessor Options-title}{Options Controlling the Preprocessor}
  25119. -'xrdef {Preprocessor Options-pg}{48}
  25120. -'xrdef {Preprocessor Options-snt}{Section'tie4.9}
  25121. +'xrdef {Preprocessor Options-pg}{45}
  25122. +'xrdef {Preprocessor Options-snt}{Section'tie3.9}
  25123.  'xrdef {Assembler Options-title}{Passing Options to the Assembler}
  25124. -'xrdef {Assembler Options-pg}{51}
  25125. -'xrdef {Assembler Options-snt}{Section'tie4.10}
  25126. +'xrdef {Assembler Options-pg}{48}
  25127. +'xrdef {Assembler Options-snt}{Section'tie3.10}
  25128.  'xrdef {Link Options-title}{Options for Linking}
  25129. -'xrdef {Link Options-pg}{51}
  25130. -'xrdef {Link Options-snt}{Section'tie4.11}
  25131. +'xrdef {Link Options-pg}{48}
  25132. +'xrdef {Link Options-snt}{Section'tie3.11}
  25133.  'xrdef {Directory Options-title}{Options for Directory Search}
  25134. -'xrdef {Directory Options-pg}{53}
  25135. -'xrdef {Directory Options-snt}{Section'tie4.12}
  25136. +'xrdef {Directory Options-pg}{50}
  25137. +'xrdef {Directory Options-snt}{Section'tie3.12}
  25138.  'xrdef {Target Options-title}{Specifying Target Machine and Compiler Version}
  25139. -'xrdef {Target Options-pg}{54}
  25140. -'xrdef {Target Options-snt}{Section'tie4.13}
  25141. +'xrdef {Target Options-pg}{51}
  25142. +'xrdef {Target Options-snt}{Section'tie3.13}
  25143.  'xrdef {Submodel Options-title}{Hardware Models and Configurations}
  25144. -'xrdef {Submodel Options-pg}{56}
  25145. -'xrdef {Submodel Options-snt}{Section'tie4.14}
  25146. +'xrdef {Submodel Options-pg}{52}
  25147. +'xrdef {Submodel Options-snt}{Section'tie3.14}
  25148.  'xrdef {M680x0 Options-title}{M680x0 Options}
  25149. -'xrdef {M680x0 Options-pg}{56}
  25150. -'xrdef {M680x0 Options-snt}{Section'tie4.14.1}
  25151. +'xrdef {M680x0 Options-pg}{53}
  25152. +'xrdef {M680x0 Options-snt}{Section'tie3.14.1}
  25153.  'xrdef {VAX Options-title}{VAX Options}
  25154. -'xrdef {VAX Options-pg}{57}
  25155. -'xrdef {VAX Options-snt}{Section'tie4.14.2}
  25156. +'xrdef {VAX Options-pg}{54}
  25157. +'xrdef {VAX Options-snt}{Section'tie3.14.2}
  25158.  'xrdef {SPARC Options-title}{SPARC Options}
  25159. -'xrdef {SPARC Options-pg}{58}
  25160. -'xrdef {SPARC Options-snt}{Section'tie4.14.3}
  25161. +'xrdef {SPARC Options-pg}{54}
  25162. +'xrdef {SPARC Options-snt}{Section'tie3.14.3}
  25163.  'xrdef {Convex Options-title}{Convex Options}
  25164. -'xrdef {Convex Options-pg}{60}
  25165. -'xrdef {Convex Options-snt}{Section'tie4.14.4}
  25166. +'xrdef {Convex Options-pg}{57}
  25167. +'xrdef {Convex Options-snt}{Section'tie3.14.4}
  25168.  'xrdef {AMD29K Options-title}{AMD29K Options}
  25169. -'xrdef {AMD29K Options-pg}{61}
  25170. -'xrdef {AMD29K Options-snt}{Section'tie4.14.5}
  25171. +'xrdef {AMD29K Options-pg}{58}
  25172. +'xrdef {AMD29K Options-snt}{Section'tie3.14.5}
  25173.  'xrdef {ARM Options-title}{ARM Options}
  25174. -'xrdef {ARM Options-pg}{63}
  25175. -'xrdef {ARM Options-snt}{Section'tie4.14.6}
  25176. +'xrdef {ARM Options-pg}{60}
  25177. +'xrdef {ARM Options-snt}{Section'tie3.14.6}
  25178.  'xrdef {M88K Options-title}{M88K Options}
  25179. -'xrdef {M88K Options-pg}{63}
  25180. -'xrdef {M88K Options-snt}{Section'tie4.14.7}
  25181. +'xrdef {M88K Options-pg}{60}
  25182. +'xrdef {M88K Options-snt}{Section'tie3.14.7}
  25183.  'xrdef {RS/6000 and PowerPC Options-title}{IBM RS/6000 and PowerPC Options}
  25184. -'xrdef {RS/6000 and PowerPC Options-pg}{67}
  25185. -'xrdef {RS/6000 and PowerPC Options-snt}{Section'tie4.14.8}
  25186. +'xrdef {RS/6000 and PowerPC Options-pg}{63}
  25187. +'xrdef {RS/6000 and PowerPC Options-snt}{Section'tie3.14.8}
  25188.  'xrdef {RT Options-title}{IBM RT Options}
  25189. -'xrdef {RT Options-pg}{69}
  25190. -'xrdef {RT Options-snt}{Section'tie4.14.9}
  25191. +'xrdef {RT Options-pg}{65}
  25192. +'xrdef {RT Options-snt}{Section'tie3.14.9}
  25193.  'xrdef {MIPS Options-title}{MIPS Options}
  25194. -'xrdef {MIPS Options-pg}{70}
  25195. -'xrdef {MIPS Options-snt}{Section'tie4.14.10}
  25196. +'xrdef {MIPS Options-pg}{66}
  25197. +'xrdef {MIPS Options-snt}{Section'tie3.14.10}
  25198.  'xrdef {i386 Options-title}{Intel 386 Options}
  25199. -'xrdef {i386 Options-pg}{73}
  25200. -'xrdef {i386 Options-snt}{Section'tie4.14.11}
  25201. +'xrdef {i386 Options-pg}{69}
  25202. +'xrdef {i386 Options-snt}{Section'tie3.14.11}
  25203.  'xrdef {HPPA Options-title}{HPPA Options}
  25204. -'xrdef {HPPA Options-pg}{74}
  25205. -'xrdef {HPPA Options-snt}{Section'tie4.14.12}
  25206. +'xrdef {HPPA Options-pg}{70}
  25207. +'xrdef {HPPA Options-snt}{Section'tie3.14.12}
  25208.  'xrdef {Intel 960 Options-title}{Intel 960 Options}
  25209. -'xrdef {Intel 960 Options-pg}{75}
  25210. -'xrdef {Intel 960 Options-snt}{Section'tie4.14.13}
  25211. +'xrdef {Intel 960 Options-pg}{71}
  25212. +'xrdef {Intel 960 Options-snt}{Section'tie3.14.13}
  25213.  'xrdef {DEC Alpha Options-title}{DEC Alpha Options}
  25214. -'xrdef {DEC Alpha Options-pg}{76}
  25215. -'xrdef {DEC Alpha Options-snt}{Section'tie4.14.14}
  25216. +'xrdef {DEC Alpha Options-pg}{72}
  25217. +'xrdef {DEC Alpha Options-snt}{Section'tie3.14.14}
  25218.  'xrdef {Clipper Options-title}{Clipper Options}
  25219. -'xrdef {Clipper Options-pg}{77}
  25220. -'xrdef {Clipper Options-snt}{Section'tie4.14.15}
  25221. +'xrdef {Clipper Options-pg}{73}
  25222. +'xrdef {Clipper Options-snt}{Section'tie3.14.15}
  25223.  'xrdef {H8/300 Options-title}{H8/300 Options}
  25224. -'xrdef {H8/300 Options-pg}{77}
  25225. -'xrdef {H8/300 Options-snt}{Section'tie4.14.16}
  25226. +'xrdef {H8/300 Options-pg}{73}
  25227. +'xrdef {H8/300 Options-snt}{Section'tie3.14.16}
  25228.  'xrdef {System V Options-title}{Options for System V}
  25229. -'xrdef {System V Options-pg}{78}
  25230. -'xrdef {System V Options-snt}{Section'tie4.14.17}
  25231. +'xrdef {System V Options-pg}{73}
  25232. +'xrdef {System V Options-snt}{Section'tie3.14.17}
  25233.  'xrdef {Code Gen Options-title}{Options for Code Generation Conventions}
  25234. -'xrdef {Code Gen Options-pg}{78}
  25235. -'xrdef {Code Gen Options-snt}{Section'tie4.15}
  25236. +'xrdef {Code Gen Options-pg}{74}
  25237. +'xrdef {Code Gen Options-snt}{Section'tie3.15}
  25238.  'xrdef {Environment Variables-title}{Environment Variables Affecting GNU CC}
  25239. -'xrdef {Environment Variables-pg}{81}
  25240. -'xrdef {Environment Variables-snt}{Section'tie4.16}
  25241. +'xrdef {Environment Variables-pg}{77}
  25242. +'xrdef {Environment Variables-snt}{Section'tie3.16}
  25243.  'xrdef {Running Protoize-title}{Running Protoize}
  25244. -'xrdef {Running Protoize-pg}{83}
  25245. -'xrdef {Running Protoize-snt}{Section'tie4.17}
  25246. +'xrdef {Running Protoize-pg}{78}
  25247. +'xrdef {Running Protoize-snt}{Section'tie3.17}
  25248.  'xrdef {Installation-title}{Installing GNU CC}
  25249. -'xrdef {Installation-pg}{87}
  25250. -'xrdef {Installation-snt}{Chapter'tie5}
  25251. +'xrdef {Installation-pg}{83}
  25252. +'xrdef {Installation-snt}{Chapter'tie4}
  25253.  'xrdef {Configurations-title}{Configurations Supported by GNU CC}
  25254. -'xrdef {Configurations-pg}{93}
  25255. -'xrdef {Configurations-snt}{Section'tie5.1}
  25256. +'xrdef {Configurations-pg}{89}
  25257. +'xrdef {Configurations-snt}{Section'tie4.1}
  25258.  'xrdef {Other Dir-title}{Compilation in a Separate Directory}
  25259. -'xrdef {Other Dir-pg}{106}
  25260. -'xrdef {Other Dir-snt}{Section'tie5.2}
  25261. +'xrdef {Other Dir-pg}{101}
  25262. +'xrdef {Other Dir-snt}{Section'tie4.2}
  25263.  'xrdef {Cross-Compiler-title}{Building and Installing a Cross-Compiler}
  25264. -'xrdef {Cross-Compiler-pg}{106}
  25265. -'xrdef {Cross-Compiler-snt}{Section'tie5.3}
  25266. +'xrdef {Cross-Compiler-pg}{102}
  25267. +'xrdef {Cross-Compiler-snt}{Section'tie4.3}
  25268.  'xrdef {Steps of Cross-title}{Steps of Cross-Compilation}
  25269. -'xrdef {Steps of Cross-pg}{107}
  25270. -'xrdef {Steps of Cross-snt}{Section'tie5.3.1}
  25271. +'xrdef {Steps of Cross-pg}{102}
  25272. +'xrdef {Steps of Cross-snt}{Section'tie4.3.1}
  25273.  'xrdef {Configure Cross-title}{Configuring a Cross-Compiler}
  25274. -'xrdef {Configure Cross-pg}{107}
  25275. -'xrdef {Configure Cross-snt}{Section'tie5.3.2}
  25276. +'xrdef {Configure Cross-pg}{103}
  25277. +'xrdef {Configure Cross-snt}{Section'tie4.3.2}
  25278.  'xrdef {Tools and Libraries-title}{Tools and Libraries for a Cross-Compiler}
  25279. -'xrdef {Tools and Libraries-pg}{108}
  25280. -'xrdef {Tools and Libraries-snt}{Section'tie5.3.3}
  25281. +'xrdef {Tools and Libraries-pg}{103}
  25282. +'xrdef {Tools and Libraries-snt}{Section'tie4.3.3}
  25283.  'xrdef {Cross Runtime-title}{\file {libgcc.a} and Cross-Compilers}
  25284. -'xrdef {Cross Runtime-pg}{109}
  25285. -'xrdef {Cross Runtime-snt}{Section'tie5.3.4}
  25286. +'xrdef {Cross Runtime-pg}{104}
  25287. +'xrdef {Cross Runtime-snt}{Section'tie4.3.4}
  25288.  'xrdef {Cross Headers-title}{Cross-Compilers and Header Files}
  25289. -'xrdef {Cross Headers-pg}{111}
  25290. -'xrdef {Cross Headers-snt}{Section'tie5.3.5}
  25291. +'xrdef {Cross Headers-pg}{106}
  25292. +'xrdef {Cross Headers-snt}{Section'tie4.3.5}
  25293.  'xrdef {Build Cross-title}{Actually Building the Cross-Compiler}
  25294. -'xrdef {Build Cross-pg}{112}
  25295. -'xrdef {Build Cross-snt}{Section'tie5.3.6}
  25296. +'xrdef {Build Cross-pg}{107}
  25297. +'xrdef {Build Cross-snt}{Section'tie4.3.6}
  25298.  'xrdef {Sun Install-title}{Installing GNU CC on the Sun}
  25299. -'xrdef {Sun Install-pg}{112}
  25300. -'xrdef {Sun Install-snt}{Section'tie5.4}
  25301. +'xrdef {Sun Install-pg}{107}
  25302. +'xrdef {Sun Install-snt}{Section'tie4.4}
  25303.  'xrdef {VMS Install-title}{Installing GNU CC on VMS}
  25304. -'xrdef {VMS Install-pg}{113}
  25305. -'xrdef {VMS Install-snt}{Section'tie5.5}
  25306. +'xrdef {VMS Install-pg}{108}
  25307. +'xrdef {VMS Install-snt}{Section'tie4.5}
  25308.  'xrdef {Collect2-title}{\code {collect2}}
  25309. -'xrdef {Collect2-pg}{117}
  25310. -'xrdef {Collect2-snt}{Section'tie5.6}
  25311. +'xrdef {Collect2-pg}{112}
  25312. +'xrdef {Collect2-snt}{Section'tie4.6}
  25313.  'xrdef {Header Dirs-title}{Standard Header File Directories}
  25314. -'xrdef {Header Dirs-pg}{118}
  25315. -'xrdef {Header Dirs-snt}{Section'tie5.7}
  25316. +'xrdef {Header Dirs-pg}{113}
  25317. +'xrdef {Header Dirs-snt}{Section'tie4.7}
  25318.  'xrdef {C Extensions-title}{Extensions to the C Language Family}
  25319. -'xrdef {C Extensions-pg}{119}
  25320. -'xrdef {C Extensions-snt}{Chapter'tie6}
  25321. +'xrdef {C Extensions-pg}{115}
  25322. +'xrdef {C Extensions-snt}{Chapter'tie5}
  25323.  'xrdef {Statement Exprs-title}{Statements and Declarations in Expressions}
  25324. -'xrdef {Statement Exprs-pg}{119}
  25325. -'xrdef {Statement Exprs-snt}{Section'tie6.1}
  25326. +'xrdef {Statement Exprs-pg}{115}
  25327. +'xrdef {Statement Exprs-snt}{Section'tie5.1}
  25328.  'xrdef {Local Labels-title}{Locally Declared Labels}
  25329. -'xrdef {Local Labels-pg}{120}
  25330. -'xrdef {Local Labels-snt}{Section'tie6.2}
  25331. +'xrdef {Local Labels-pg}{116}
  25332. +'xrdef {Local Labels-snt}{Section'tie5.2}
  25333.  'xrdef {Labels as Values-title}{Labels as Values}
  25334. -'xrdef {Labels as Values-pg}{121}
  25335. -'xrdef {Labels as Values-snt}{Section'tie6.3}
  25336. +'xrdef {Labels as Values-pg}{117}
  25337. +'xrdef {Labels as Values-snt}{Section'tie5.3}
  25338.  'xrdef {Nested Functions-title}{Nested Functions}
  25339. -'xrdef {Nested Functions-pg}{122}
  25340. -'xrdef {Nested Functions-snt}{Section'tie6.4}
  25341. +'xrdef {Nested Functions-pg}{118}
  25342. +'xrdef {Nested Functions-snt}{Section'tie5.4}
  25343.  'xrdef {Constructing Calls-title}{Constructing Function Calls}
  25344. -'xrdef {Constructing Calls-pg}{125}
  25345. -'xrdef {Constructing Calls-snt}{Section'tie6.5}
  25346. +'xrdef {Constructing Calls-pg}{121}
  25347. +'xrdef {Constructing Calls-snt}{Section'tie5.5}
  25348.  'xrdef {Naming Types-title}{Naming an Expression's Type}
  25349. -'xrdef {Naming Types-pg}{125}
  25350. -'xrdef {Naming Types-snt}{Section'tie6.6}
  25351. +'xrdef {Naming Types-pg}{121}
  25352. +'xrdef {Naming Types-snt}{Section'tie5.6}
  25353.  'xrdef {Typeof-title}{Referring to a Type with \code {typeof}}
  25354. -'xrdef {Typeof-pg}{126}
  25355. -'xrdef {Typeof-snt}{Section'tie6.7}
  25356. +'xrdef {Typeof-pg}{122}
  25357. +'xrdef {Typeof-snt}{Section'tie5.7}
  25358.  'xrdef {Lvalues-title}{Generalized Lvalues}
  25359. -'xrdef {Lvalues-pg}{127}
  25360. -'xrdef {Lvalues-snt}{Section'tie6.8}
  25361. +'xrdef {Lvalues-pg}{123}
  25362. +'xrdef {Lvalues-snt}{Section'tie5.8}
  25363.  'xrdef {Conditionals-title}{Conditionals with Omitted Operands}
  25364. -'xrdef {Conditionals-pg}{128}
  25365. -'xrdef {Conditionals-snt}{Section'tie6.9}
  25366. +'xrdef {Conditionals-pg}{124}
  25367. +'xrdef {Conditionals-snt}{Section'tie5.9}
  25368.  'xrdef {Long Long-title}{Double-Word Integers}
  25369. -'xrdef {Long Long-pg}{129}
  25370. -'xrdef {Long Long-snt}{Section'tie6.10}
  25371. +'xrdef {Long Long-pg}{125}
  25372. +'xrdef {Long Long-snt}{Section'tie5.10}
  25373.  'xrdef {Complex-title}{Complex Numbers}
  25374. -'xrdef {Complex-pg}{129}
  25375. -'xrdef {Complex-snt}{Section'tie6.11}
  25376. +'xrdef {Complex-pg}{125}
  25377. +'xrdef {Complex-snt}{Section'tie5.11}
  25378.  'xrdef {Zero Length-title}{Arrays of Length Zero}
  25379. -'xrdef {Zero Length-pg}{130}
  25380. -'xrdef {Zero Length-snt}{Section'tie6.12}
  25381. +'xrdef {Zero Length-pg}{126}
  25382. +'xrdef {Zero Length-snt}{Section'tie5.12}
  25383.  'xrdef {Variable Length-title}{Arrays of Variable Length}
  25384. -'xrdef {Variable Length-pg}{131}
  25385. -'xrdef {Variable Length-snt}{Section'tie6.13}
  25386. +'xrdef {Variable Length-pg}{127}
  25387. +'xrdef {Variable Length-snt}{Section'tie5.13}
  25388.  'xrdef {Macro Varargs-title}{Macros with Variable Numbers of Arguments}
  25389. -'xrdef {Macro Varargs-pg}{132}
  25390. -'xrdef {Macro Varargs-snt}{Section'tie6.14}
  25391. +'xrdef {Macro Varargs-pg}{128}
  25392. +'xrdef {Macro Varargs-snt}{Section'tie5.14}
  25393.  'xrdef {Subscripting-title}{Non-Lvalue Arrays May Have Subscripts}
  25394. -'xrdef {Subscripting-pg}{133}
  25395. -'xrdef {Subscripting-snt}{Section'tie6.15}
  25396. +'xrdef {Subscripting-pg}{129}
  25397. +'xrdef {Subscripting-snt}{Section'tie5.15}
  25398.  'xrdef {Pointer Arith-title}{Arithmetic on \code {void}- and Function-Pointers}
  25399. -'xrdef {Pointer Arith-pg}{133}
  25400. -'xrdef {Pointer Arith-snt}{Section'tie6.16}
  25401. +'xrdef {Pointer Arith-pg}{129}
  25402. +'xrdef {Pointer Arith-snt}{Section'tie5.16}
  25403.  'xrdef {Initializers-title}{Non-Constant Initializers}
  25404. -'xrdef {Initializers-pg}{134}
  25405. -'xrdef {Initializers-snt}{Section'tie6.17}
  25406. +'xrdef {Initializers-pg}{130}
  25407. +'xrdef {Initializers-snt}{Section'tie5.17}
  25408.  'xrdef {Constructors-title}{Constructor Expressions}
  25409. -'xrdef {Constructors-pg}{134}
  25410. -'xrdef {Constructors-snt}{Section'tie6.18}
  25411. +'xrdef {Constructors-pg}{130}
  25412. +'xrdef {Constructors-snt}{Section'tie5.18}
  25413.  'xrdef {Labeled Elements-title}{Labeled Elements in Initializers}
  25414. -'xrdef {Labeled Elements-pg}{135}
  25415. -'xrdef {Labeled Elements-snt}{Section'tie6.19}
  25416. +'xrdef {Labeled Elements-pg}{131}
  25417. +'xrdef {Labeled Elements-snt}{Section'tie5.19}
  25418.  'xrdef {Case Ranges-title}{Case Ranges}
  25419. -'xrdef {Case Ranges-pg}{137}
  25420. -'xrdef {Case Ranges-snt}{Section'tie6.20}
  25421. +'xrdef {Case Ranges-pg}{133}
  25422. +'xrdef {Case Ranges-snt}{Section'tie5.20}
  25423.  'xrdef {Cast to Union-title}{Cast to a Union Type}
  25424. -'xrdef {Cast to Union-pg}{137}
  25425. -'xrdef {Cast to Union-snt}{Section'tie6.21}
  25426. +'xrdef {Cast to Union-pg}{133}
  25427. +'xrdef {Cast to Union-snt}{Section'tie5.21}
  25428.  'xrdef {Function Attributes-title}{Declaring Attributes of Functions}
  25429. -'xrdef {Function Attributes-pg}{138}
  25430. -'xrdef {Function Attributes-snt}{Section'tie6.22}
  25431. +'xrdef {Function Attributes-pg}{134}
  25432. +'xrdef {Function Attributes-snt}{Section'tie5.22}
  25433.  'xrdef {Function Prototypes-title}{Prototypes and Old-Style Function Definitions}
  25434. -'xrdef {Function Prototypes-pg}{141}
  25435. -'xrdef {Function Prototypes-snt}{Section'tie6.23}
  25436. +'xrdef {Function Prototypes-pg}{137}
  25437. +'xrdef {Function Prototypes-snt}{Section'tie5.23}
  25438.  'xrdef {Dollar Signs-title}{Dollar Signs in Identifier Names}
  25439. -'xrdef {Dollar Signs-pg}{142}
  25440. -'xrdef {Dollar Signs-snt}{Section'tie6.24}
  25441. +'xrdef {Dollar Signs-pg}{138}
  25442. +'xrdef {Dollar Signs-snt}{Section'tie5.24}
  25443.  'xrdef {Character Escapes-title}{The Character \key {ESC} in Constants}
  25444. -'xrdef {Character Escapes-pg}{142}
  25445. -'xrdef {Character Escapes-snt}{Section'tie6.25}
  25446. +'xrdef {Character Escapes-pg}{138}
  25447. +'xrdef {Character Escapes-snt}{Section'tie5.25}
  25448.  'xrdef {Alignment-title}{Inquiring on Alignment of Types or Variables}
  25449. -'xrdef {Alignment-pg}{143}
  25450. -'xrdef {Alignment-snt}{Section'tie6.26}
  25451. +'xrdef {Alignment-pg}{139}
  25452. +'xrdef {Alignment-snt}{Section'tie5.26}
  25453.  'xrdef {Variable Attributes-title}{Specifying Attributes of Variables}
  25454. -'xrdef {Variable Attributes-pg}{143}
  25455. -'xrdef {Variable Attributes-snt}{Section'tie6.27}
  25456. +'xrdef {Variable Attributes-pg}{139}
  25457. +'xrdef {Variable Attributes-snt}{Section'tie5.27}
  25458.  'xrdef {Inline-title}{An Inline Function is As Fast As a Macro}
  25459. -'xrdef {Inline-pg}{146}
  25460. -'xrdef {Inline-snt}{Section'tie6.28}
  25461. +'xrdef {Inline-pg}{141}
  25462. +'xrdef {Inline-snt}{Section'tie5.28}
  25463.  'xrdef {Extended Asm-title}{Assembler Instructions with C Expression Operands}
  25464. -'xrdef {Extended Asm-pg}{147}
  25465. -'xrdef {Extended Asm-snt}{Section'tie6.29}
  25466. +'xrdef {Extended Asm-pg}{143}
  25467. +'xrdef {Extended Asm-snt}{Section'tie5.29}
  25468.  'xrdef {Asm Labels-title}{Controlling Names Used in Assembler Code}
  25469. -'xrdef {Asm Labels-pg}{151}
  25470. -'xrdef {Asm Labels-snt}{Section'tie6.30}
  25471. +'xrdef {Asm Labels-pg}{147}
  25472. +'xrdef {Asm Labels-snt}{Section'tie5.30}
  25473.  'xrdef {Explicit Reg Vars-title}{Variables in Specified Registers}
  25474. -'xrdef {Explicit Reg Vars-pg}{152}
  25475. -'xrdef {Explicit Reg Vars-snt}{Section'tie6.31}
  25476. +'xrdef {Explicit Reg Vars-pg}{148}
  25477. +'xrdef {Explicit Reg Vars-snt}{Section'tie5.31}
  25478.  'xrdef {Global Reg Vars-title}{Defining Global Register Variables}
  25479. -'xrdef {Global Reg Vars-pg}{153}
  25480. -'xrdef {Global Reg Vars-snt}{Section'tie6.31.1}
  25481. +'xrdef {Global Reg Vars-pg}{148}
  25482. +'xrdef {Global Reg Vars-snt}{Section'tie5.31.1}
  25483.  'xrdef {Local Reg Vars-title}{Specifying Registers for Local Variables}
  25484. -'xrdef {Local Reg Vars-pg}{154}
  25485. -'xrdef {Local Reg Vars-snt}{Section'tie6.31.2}
  25486. +'xrdef {Local Reg Vars-pg}{150}
  25487. +'xrdef {Local Reg Vars-snt}{Section'tie5.31.2}
  25488.  'xrdef {Alternate Keywords-title}{Alternate Keywords}
  25489. -'xrdef {Alternate Keywords-pg}{155}
  25490. -'xrdef {Alternate Keywords-snt}{Section'tie6.32}
  25491. +'xrdef {Alternate Keywords-pg}{151}
  25492. +'xrdef {Alternate Keywords-snt}{Section'tie5.32}
  25493.  'xrdef {Incomplete Enums-title}{Incomplete \code {enum} Types}
  25494. -'xrdef {Incomplete Enums-pg}{156}
  25495. -'xrdef {Incomplete Enums-snt}{Section'tie6.33}
  25496. +'xrdef {Incomplete Enums-pg}{152}
  25497. +'xrdef {Incomplete Enums-snt}{Section'tie5.33}
  25498.  'xrdef {Function Names-title}{Function Names as Strings}
  25499. -'xrdef {Function Names-pg}{156}
  25500. -'xrdef {Function Names-snt}{Section'tie6.34}
  25501. +'xrdef {Function Names-pg}{152}
  25502. +'xrdef {Function Names-snt}{Section'tie5.34}
  25503.  'xrdef {C++ Extensions-title}{Extensions to the C++ Language}
  25504. -'xrdef {C++ Extensions-pg}{159}
  25505. -'xrdef {C++ Extensions-snt}{Chapter'tie7}
  25506. +'xrdef {C++ Extensions-pg}{155}
  25507. +'xrdef {C++ Extensions-snt}{Chapter'tie6}
  25508.  'xrdef {Naming Results-title}{Named Return Values in C++}
  25509. -'xrdef {Naming Results-pg}{159}
  25510. -'xrdef {Naming Results-snt}{Section'tie7.1}
  25511. +'xrdef {Naming Results-pg}{155}
  25512. +'xrdef {Naming Results-snt}{Section'tie6.1}
  25513.  'xrdef {Min and Max-title}{Minimum and Maximum Operators in C++}
  25514. -'xrdef {Min and Max-pg}{161}
  25515. -'xrdef {Min and Max-snt}{Section'tie7.2}
  25516. +'xrdef {Min and Max-pg}{157}
  25517. +'xrdef {Min and Max-snt}{Section'tie6.2}
  25518.  'xrdef {Destructors and Goto-title}{\code {goto} and Destructors in GNU C++}
  25519. -'xrdef {Destructors and Goto-pg}{162}
  25520. -'xrdef {Destructors and Goto-snt}{Section'tie7.3}
  25521. +'xrdef {Destructors and Goto-pg}{158}
  25522. +'xrdef {Destructors and Goto-snt}{Section'tie6.3}
  25523.  'xrdef {C++ Interface-title}{Declarations and Definitions in One Header}
  25524. -'xrdef {C++ Interface-pg}{162}
  25525. -'xrdef {C++ Interface-snt}{Section'tie7.4}
  25526. -'xrdef {Template Instantiation-title}{Where's the Template?}
  25527. -'xrdef {Template Instantiation-pg}{164}
  25528. -'xrdef {Template Instantiation-snt}{Section'tie7.5}
  25529. +'xrdef {C++ Interface-pg}{158}
  25530. +'xrdef {C++ Interface-snt}{Section'tie6.4}
  25531.  'xrdef {C++ Signatures-title}{Type Abstraction using Signatures}
  25532. -'xrdef {C++ Signatures-pg}{166}
  25533. -'xrdef {C++ Signatures-snt}{Section'tie7.6}
  25534. +'xrdef {C++ Signatures-pg}{160}
  25535. +'xrdef {C++ Signatures-snt}{Section'tie6.5}
  25536.  'xrdef {Trouble-title}{Known Causes of Trouble with GNU CC}
  25537. -'xrdef {Trouble-pg}{169}
  25538. -'xrdef {Trouble-snt}{Chapter'tie8}
  25539. +'xrdef {Trouble-pg}{163}
  25540. +'xrdef {Trouble-snt}{Chapter'tie7}
  25541.  'xrdef {Actual Bugs-title}{Actual Bugs We Haven't Fixed Yet}
  25542. -'xrdef {Actual Bugs-pg}{169}
  25543. -'xrdef {Actual Bugs-snt}{Section'tie8.1}
  25544. +'xrdef {Actual Bugs-pg}{163}
  25545. +'xrdef {Actual Bugs-snt}{Section'tie7.1}
  25546.  'xrdef {Installation Problems-title}{Installation Problems}
  25547. -'xrdef {Installation Problems-pg}{169}
  25548. -'xrdef {Installation Problems-snt}{Section'tie8.2}
  25549. +'xrdef {Installation Problems-pg}{163}
  25550. +'xrdef {Installation Problems-snt}{Section'tie7.2}
  25551.  'xrdef {Cross-Compiler Problems-title}{Cross-Compiler Problems}
  25552. -'xrdef {Cross-Compiler Problems-pg}{174}
  25553. -'xrdef {Cross-Compiler Problems-snt}{Section'tie8.3}
  25554. +'xrdef {Cross-Compiler Problems-pg}{168}
  25555. +'xrdef {Cross-Compiler Problems-snt}{Section'tie7.3}
  25556.  'xrdef {Interoperation-title}{Interoperation}
  25557. -'xrdef {Interoperation-pg}{175}
  25558. -'xrdef {Interoperation-snt}{Section'tie8.4}
  25559. +'xrdef {Interoperation-pg}{168}
  25560. +'xrdef {Interoperation-snt}{Section'tie7.4}
  25561.  'xrdef {External Bugs-title}{Problems Compiling Certain Programs}
  25562. -'xrdef {External Bugs-pg}{179}
  25563. -'xrdef {External Bugs-snt}{Section'tie8.5}
  25564. +'xrdef {External Bugs-pg}{173}
  25565. +'xrdef {External Bugs-snt}{Section'tie7.5}
  25566.  'xrdef {Incompatibilities-title}{Incompatibilities of GNU CC}
  25567. -'xrdef {Incompatibilities-pg}{180}
  25568. -'xrdef {Incompatibilities-snt}{Section'tie8.6}
  25569. +'xrdef {Incompatibilities-pg}{174}
  25570. +'xrdef {Incompatibilities-snt}{Section'tie7.6}
  25571.  'xrdef {Fixed Headers-title}{Fixed Header Files}
  25572. -'xrdef {Fixed Headers-pg}{183}
  25573. -'xrdef {Fixed Headers-snt}{Section'tie8.7}
  25574. +'xrdef {Fixed Headers-pg}{177}
  25575. +'xrdef {Fixed Headers-snt}{Section'tie7.7}
  25576.  'xrdef {Disappointments-title}{Disappointments and Misunderstandings}
  25577. -'xrdef {Disappointments-pg}{184}
  25578. -'xrdef {Disappointments-snt}{Section'tie8.8}
  25579. +'xrdef {Disappointments-pg}{178}
  25580. +'xrdef {Disappointments-snt}{Section'tie7.8}
  25581.  'xrdef {C++ Misunderstandings-title}{Common Misunderstandings with GNU C++}
  25582. -'xrdef {C++ Misunderstandings-pg}{185}
  25583. -'xrdef {C++ Misunderstandings-snt}{Section'tie8.9}
  25584. +'xrdef {C++ Misunderstandings-pg}{179}
  25585. +'xrdef {C++ Misunderstandings-snt}{Section'tie7.9}
  25586.  'xrdef {Static Definitions-title}{Declare \emph {and} Define Static Members}
  25587. -'xrdef {Static Definitions-pg}{186}
  25588. -'xrdef {Static Definitions-snt}{Section'tie8.9.1}
  25589. +'xrdef {Static Definitions-pg}{180}
  25590. +'xrdef {Static Definitions-snt}{Section'tie7.9.1}
  25591.  'xrdef {Temporaries-title}{Temporaries May Vanish Before You Expect}
  25592. -'xrdef {Temporaries-pg}{186}
  25593. -'xrdef {Temporaries-snt}{Section'tie8.9.2}
  25594. +'xrdef {Temporaries-pg}{180}
  25595. +'xrdef {Temporaries-snt}{Section'tie7.9.2}
  25596.  'xrdef {Protoize Caveats-title}{Caveats of using \code {protoize}}
  25597. -'xrdef {Protoize Caveats-pg}{187}
  25598. -'xrdef {Protoize Caveats-snt}{Section'tie8.10}
  25599. +'xrdef {Protoize Caveats-pg}{181}
  25600. +'xrdef {Protoize Caveats-snt}{Section'tie7.10}
  25601.  'xrdef {Non-bugs-title}{Certain Changes We Don't Want to Make}
  25602. -'xrdef {Non-bugs-pg}{188}
  25603. -'xrdef {Non-bugs-snt}{Section'tie8.11}
  25604. +'xrdef {Non-bugs-pg}{182}
  25605. +'xrdef {Non-bugs-snt}{Section'tie7.11}
  25606.  'xrdef {Warnings and Errors-title}{Warning Messages and Error Messages}
  25607. -'xrdef {Warnings and Errors-pg}{191}
  25608. -'xrdef {Warnings and Errors-snt}{Section'tie8.12}
  25609. +'xrdef {Warnings and Errors-pg}{186}
  25610. +'xrdef {Warnings and Errors-snt}{Section'tie7.12}
  25611.  'xrdef {Bugs-title}{Reporting Bugs}
  25612. -'xrdef {Bugs-pg}{193}
  25613. -'xrdef {Bugs-snt}{Chapter'tie9}
  25614. +'xrdef {Bugs-pg}{187}
  25615. +'xrdef {Bugs-snt}{Chapter'tie8}
  25616.  'xrdef {Bug Criteria-title}{Have You Found a Bug?}
  25617. -'xrdef {Bug Criteria-pg}{193}
  25618. -'xrdef {Bug Criteria-snt}{Section'tie9.1}
  25619. +'xrdef {Bug Criteria-pg}{187}
  25620. +'xrdef {Bug Criteria-snt}{Section'tie8.1}
  25621.  'xrdef {Bug Lists-title}{Where to Report Bugs}
  25622. -'xrdef {Bug Lists-pg}{194}
  25623. -'xrdef {Bug Lists-snt}{Section'tie9.2}
  25624. +'xrdef {Bug Lists-pg}{188}
  25625. +'xrdef {Bug Lists-snt}{Section'tie8.2}
  25626.  'xrdef {Bug Reporting-title}{How to Report Bugs}
  25627. -'xrdef {Bug Reporting-pg}{195}
  25628. -'xrdef {Bug Reporting-snt}{Section'tie9.3}
  25629. +'xrdef {Bug Reporting-pg}{189}
  25630. +'xrdef {Bug Reporting-snt}{Section'tie8.3}
  25631.  'xrdef {Sending Patches-title}{Sending Patches for GNU CC}
  25632. -'xrdef {Sending Patches-pg}{199}
  25633. -'xrdef {Sending Patches-snt}{Section'tie9.4}
  25634. +'xrdef {Sending Patches-pg}{193}
  25635. +'xrdef {Sending Patches-snt}{Section'tie8.4}
  25636.  'xrdef {Service-title}{How To Get Help with GNU CC}
  25637. -'xrdef {Service-pg}{203}
  25638. -'xrdef {Service-snt}{Chapter'tie10}
  25639. +'xrdef {Service-pg}{197}
  25640. +'xrdef {Service-snt}{Chapter'tie9}
  25641.  'xrdef {VMS-title}{Using GNU CC on VMS}
  25642. -'xrdef {VMS-pg}{205}
  25643. -'xrdef {VMS-snt}{Chapter'tie11}
  25644. +'xrdef {VMS-pg}{199}
  25645. +'xrdef {VMS-snt}{Chapter'tie10}
  25646.  'xrdef {Include Files and VMS-title}{Include Files and VMS}
  25647. -'xrdef {Include Files and VMS-pg}{205}
  25648. -'xrdef {Include Files and VMS-snt}{Section'tie11.1}
  25649. +'xrdef {Include Files and VMS-pg}{199}
  25650. +'xrdef {Include Files and VMS-snt}{Section'tie10.1}
  25651.  'xrdef {Global Declarations-title}{Global Declarations and VMS}
  25652. -'xrdef {Global Declarations-pg}{206}
  25653. -'xrdef {Global Declarations-snt}{Section'tie11.2}
  25654. +'xrdef {Global Declarations-pg}{200}
  25655. +'xrdef {Global Declarations-snt}{Section'tie10.2}
  25656.  'xrdef {VMS Misc-title}{Other VMS Issues}
  25657. -'xrdef {VMS Misc-pg}{209}
  25658. -'xrdef {VMS Misc-snt}{Section'tie11.3}
  25659. +'xrdef {VMS Misc-pg}{203}
  25660. +'xrdef {VMS Misc-snt}{Section'tie10.3}
  25661.  'xrdef {Portability-title}{GNU CC and Portability}
  25662. -'xrdef {Portability-pg}{211}
  25663. -'xrdef {Portability-snt}{Chapter'tie12}
  25664. +'xrdef {Portability-pg}{205}
  25665. +'xrdef {Portability-snt}{Chapter'tie11}
  25666.  'xrdef {Interface-title}{Interfacing to GNU CC Output}
  25667. -'xrdef {Interface-pg}{213}
  25668. -'xrdef {Interface-snt}{Chapter'tie13}
  25669. +'xrdef {Interface-pg}{207}
  25670. +'xrdef {Interface-snt}{Chapter'tie12}
  25671.  'xrdef {Passes-title}{Passes and Files of the Compiler}
  25672. -'xrdef {Passes-pg}{215}
  25673. -'xrdef {Passes-snt}{Chapter'tie14}
  25674. +'xrdef {Passes-pg}{209}
  25675. +'xrdef {Passes-snt}{Chapter'tie13}
  25676.  'xrdef {RTL-title}{RTL Representation}
  25677. -'xrdef {RTL-pg}{221}
  25678. -'xrdef {RTL-snt}{Chapter'tie15}
  25679. +'xrdef {RTL-pg}{215}
  25680. +'xrdef {RTL-snt}{Chapter'tie14}
  25681.  'xrdef {RTL Objects-title}{RTL Object Types}
  25682. -'xrdef {RTL Objects-pg}{221}
  25683. -'xrdef {RTL Objects-snt}{Section'tie15.1}
  25684. +'xrdef {RTL Objects-pg}{215}
  25685. +'xrdef {RTL Objects-snt}{Section'tie14.1}
  25686.  'xrdef {Accessors-title}{Access to Operands}
  25687. -'xrdef {Accessors-pg}{222}
  25688. -'xrdef {Accessors-snt}{Section'tie15.2}
  25689. +'xrdef {Accessors-pg}{216}
  25690. +'xrdef {Accessors-snt}{Section'tie14.2}
  25691.  'xrdef {Flags-title}{Flags in an RTL Expression}
  25692. -'xrdef {Flags-pg}{225}
  25693. -'xrdef {Flags-snt}{Section'tie15.3}
  25694. +'xrdef {Flags-pg}{219}
  25695. +'xrdef {Flags-snt}{Section'tie14.3}
  25696.  'xrdef {Machine Modes-title}{Machine Modes}
  25697. -'xrdef {Machine Modes-pg}{228}
  25698. -'xrdef {Machine Modes-snt}{Section'tie15.4}
  25699. +'xrdef {Machine Modes-pg}{222}
  25700. +'xrdef {Machine Modes-snt}{Section'tie14.4}
  25701.  'xrdef {Constants-title}{Constant Expression Types}
  25702. -'xrdef {Constants-pg}{232}
  25703. -'xrdef {Constants-snt}{Section'tie15.5}
  25704. +'xrdef {Constants-pg}{226}
  25705. +'xrdef {Constants-snt}{Section'tie14.5}
  25706.  'xrdef {Regs and Memory-title}{Registers and Memory}
  25707. -'xrdef {Regs and Memory-pg}{234}
  25708. -'xrdef {Regs and Memory-snt}{Section'tie15.6}
  25709. +'xrdef {Regs and Memory-pg}{228}
  25710. +'xrdef {Regs and Memory-snt}{Section'tie14.6}
  25711.  'xrdef {Arithmetic-title}{RTL Expressions for Arithmetic}
  25712. -'xrdef {Arithmetic-pg}{238}
  25713. -'xrdef {Arithmetic-snt}{Section'tie15.7}
  25714. +'xrdef {Arithmetic-pg}{232}
  25715. +'xrdef {Arithmetic-snt}{Section'tie14.7}
  25716.  'xrdef {Comparisons-title}{Comparison Operations}
  25717. -'xrdef {Comparisons-pg}{241}
  25718. -'xrdef {Comparisons-snt}{Section'tie15.8}
  25719. +'xrdef {Comparisons-pg}{235}
  25720. +'xrdef {Comparisons-snt}{Section'tie14.8}
  25721.  'xrdef {Bit Fields-title}{Bit Fields}
  25722. -'xrdef {Bit Fields-pg}{243}
  25723. -'xrdef {Bit Fields-snt}{Section'tie15.9}
  25724. +'xrdef {Bit Fields-pg}{237}
  25725. +'xrdef {Bit Fields-snt}{Section'tie14.9}
  25726.  'xrdef {Conversions-title}{Conversions}
  25727. -'xrdef {Conversions-pg}{243}
  25728. -'xrdef {Conversions-snt}{Section'tie15.10}
  25729. +'xrdef {Conversions-pg}{237}
  25730. +'xrdef {Conversions-snt}{Section'tie14.10}
  25731.  'xrdef {RTL Declarations-title}{Declarations}
  25732. -'xrdef {RTL Declarations-pg}{244}
  25733. -'xrdef {RTL Declarations-snt}{Section'tie15.11}
  25734. +'xrdef {RTL Declarations-pg}{238}
  25735. +'xrdef {RTL Declarations-snt}{Section'tie14.11}
  25736.  'xrdef {Side Effects-title}{Side Effect Expressions}
  25737. -'xrdef {Side Effects-pg}{245}
  25738. -'xrdef {Side Effects-snt}{Section'tie15.12}
  25739. +'xrdef {Side Effects-pg}{239}
  25740. +'xrdef {Side Effects-snt}{Section'tie14.12}
  25741.  'xrdef {Incdec-title}{Embedded Side-Effects on Addresses}
  25742. -'xrdef {Incdec-pg}{249}
  25743. -'xrdef {Incdec-snt}{Section'tie15.13}
  25744. +'xrdef {Incdec-pg}{243}
  25745. +'xrdef {Incdec-snt}{Section'tie14.13}
  25746.  'xrdef {Assembler-title}{Assembler Instructions as Expressions}
  25747. -'xrdef {Assembler-pg}{250}
  25748. -'xrdef {Assembler-snt}{Section'tie15.14}
  25749. +'xrdef {Assembler-pg}{244}
  25750. +'xrdef {Assembler-snt}{Section'tie14.14}
  25751.  'xrdef {Insns-title}{Insns}
  25752. -'xrdef {Insns-pg}{251}
  25753. -'xrdef {Insns-snt}{Section'tie15.15}
  25754. +'xrdef {Insns-pg}{245}
  25755. +'xrdef {Insns-snt}{Section'tie14.15}
  25756.  'xrdef {Calls-title}{RTL Representation of Function-Call Insns}
  25757. -'xrdef {Calls-pg}{259}
  25758. -'xrdef {Calls-snt}{Section'tie15.16}
  25759. +'xrdef {Calls-pg}{253}
  25760. +'xrdef {Calls-snt}{Section'tie14.16}
  25761.  'xrdef {Sharing-title}{Structure Sharing Assumptions}
  25762. -'xrdef {Sharing-pg}{261}
  25763. -'xrdef {Sharing-snt}{Section'tie15.17}
  25764. +'xrdef {Sharing-pg}{255}
  25765. +'xrdef {Sharing-snt}{Section'tie14.17}
  25766.  'xrdef {Reading RTL-title}{Reading RTL}
  25767. -'xrdef {Reading RTL-pg}{262}
  25768. -'xrdef {Reading RTL-snt}{Section'tie15.18}
  25769. +'xrdef {Reading RTL-pg}{256}
  25770. +'xrdef {Reading RTL-snt}{Section'tie14.18}
  25771.  'xrdef {Machine Desc-title}{Machine Descriptions}
  25772. -'xrdef {Machine Desc-pg}{263}
  25773. -'xrdef {Machine Desc-snt}{Chapter'tie16}
  25774. +'xrdef {Machine Desc-pg}{257}
  25775. +'xrdef {Machine Desc-snt}{Chapter'tie15}
  25776.  'xrdef {Patterns-title}{Everything about Instruction Patterns}
  25777. -'xrdef {Patterns-pg}{263}
  25778. -'xrdef {Patterns-snt}{Section'tie16.1}
  25779. +'xrdef {Patterns-pg}{257}
  25780. +'xrdef {Patterns-snt}{Section'tie15.1}
  25781.  'xrdef {Example-title}{Example of \code {define_insn}}
  25782. -'xrdef {Example-pg}{264}
  25783. -'xrdef {Example-snt}{Section'tie16.2}
  25784. +'xrdef {Example-pg}{258}
  25785. +'xrdef {Example-snt}{Section'tie15.2}
  25786.  'xrdef {RTL Template-title}{RTL Template}
  25787. -'xrdef {RTL Template-pg}{265}
  25788. -'xrdef {RTL Template-snt}{Section'tie16.3}
  25789. +'xrdef {RTL Template-pg}{259}
  25790. +'xrdef {RTL Template-snt}{Section'tie15.3}
  25791.  'xrdef {Output Template-title}{Output Templates and Operand Substitution}
  25792. -'xrdef {Output Template-pg}{269}
  25793. -'xrdef {Output Template-snt}{Section'tie16.4}
  25794. +'xrdef {Output Template-pg}{263}
  25795. +'xrdef {Output Template-snt}{Section'tie15.4}
  25796.  'xrdef {Output Statement-title}{C Statements for Assembler Output}
  25797. -'xrdef {Output Statement-pg}{271}
  25798. -'xrdef {Output Statement-snt}{Section'tie16.5}
  25799. +'xrdef {Output Statement-pg}{265}
  25800. +'xrdef {Output Statement-snt}{Section'tie15.5}
  25801.  'xrdef {Constraints-title}{Operand Constraints}
  25802. -'xrdef {Constraints-pg}{273}
  25803. -'xrdef {Constraints-snt}{Section'tie16.6}
  25804. +'xrdef {Constraints-pg}{267}
  25805. +'xrdef {Constraints-snt}{Section'tie15.6}
  25806.  'xrdef {Simple Constraints-title}{Simple Constraints}
  25807. -'xrdef {Simple Constraints-pg}{273}
  25808. -'xrdef {Simple Constraints-snt}{Section'tie16.6.1}
  25809. +'xrdef {Simple Constraints-pg}{267}
  25810. +'xrdef {Simple Constraints-snt}{Section'tie15.6.1}
  25811.  'xrdef {Multi-Alternative-title}{Multiple Alternative Constraints}
  25812. -'xrdef {Multi-Alternative-pg}{277}
  25813. -'xrdef {Multi-Alternative-snt}{Section'tie16.6.2}
  25814. +'xrdef {Multi-Alternative-pg}{271}
  25815. +'xrdef {Multi-Alternative-snt}{Section'tie15.6.2}
  25816.  'xrdef {Class Preferences-title}{Register Class Preferences}
  25817. -'xrdef {Class Preferences-pg}{278}
  25818. -'xrdef {Class Preferences-snt}{Section'tie16.6.3}
  25819. +'xrdef {Class Preferences-pg}{272}
  25820. +'xrdef {Class Preferences-snt}{Section'tie15.6.3}
  25821.  'xrdef {Modifiers-title}{Constraint Modifier Characters}
  25822. -'xrdef {Modifiers-pg}{279}
  25823. -'xrdef {Modifiers-snt}{Section'tie16.6.4}
  25824. +'xrdef {Modifiers-pg}{273}
  25825. +'xrdef {Modifiers-snt}{Section'tie15.6.4}
  25826.  'xrdef {Machine Constraints-title}{Constraints for Particular Machines}
  25827. -'xrdef {Machine Constraints-pg}{280}
  25828. -'xrdef {Machine Constraints-snt}{Section'tie16.6.5}
  25829. +'xrdef {Machine Constraints-pg}{274}
  25830. +'xrdef {Machine Constraints-snt}{Section'tie15.6.5}
  25831.  'xrdef {No Constraints-title}{Not Using Constraints}
  25832. -'xrdef {No Constraints-pg}{285}
  25833. -'xrdef {No Constraints-snt}{Section'tie16.6.6}
  25834. +'xrdef {No Constraints-pg}{279}
  25835. +'xrdef {No Constraints-snt}{Section'tie15.6.6}
  25836.  'xrdef {Standard Names-title}{Standard Pattern Names For Generation}
  25837. -'xrdef {Standard Names-pg}{286}
  25838. -'xrdef {Standard Names-snt}{Section'tie16.7}
  25839. +'xrdef {Standard Names-pg}{280}
  25840. +'xrdef {Standard Names-snt}{Section'tie15.7}
  25841.  'xrdef {Pattern Ordering-title}{When the Order of Patterns Matters}
  25842. -'xrdef {Pattern Ordering-pg}{296}
  25843. -'xrdef {Pattern Ordering-snt}{Section'tie16.8}
  25844. +'xrdef {Pattern Ordering-pg}{290}
  25845. +'xrdef {Pattern Ordering-snt}{Section'tie15.8}
  25846.  'xrdef {Dependent Patterns-title}{Interdependence of Patterns}
  25847. -'xrdef {Dependent Patterns-pg}{296}
  25848. -'xrdef {Dependent Patterns-snt}{Section'tie16.9}
  25849. +'xrdef {Dependent Patterns-pg}{290}
  25850. +'xrdef {Dependent Patterns-snt}{Section'tie15.9}
  25851.  'xrdef {Jump Patterns-title}{Defining Jump Instruction Patterns}
  25852. -'xrdef {Jump Patterns-pg}{298}
  25853. -'xrdef {Jump Patterns-snt}{Section'tie16.10}
  25854. +'xrdef {Jump Patterns-pg}{292}
  25855. +'xrdef {Jump Patterns-snt}{Section'tie15.10}
  25856.  'xrdef {Insn Canonicalizations-title}{Canonicalization of Instructions}
  25857. -'xrdef {Insn Canonicalizations-pg}{300}
  25858. -'xrdef {Insn Canonicalizations-snt}{Section'tie16.11}
  25859. +'xrdef {Insn Canonicalizations-pg}{294}
  25860. +'xrdef {Insn Canonicalizations-snt}{Section'tie15.11}
  25861.  'xrdef {Peephole Definitions-title}{Machine-Specific Peephole Optimizers}
  25862. -'xrdef {Peephole Definitions-pg}{301}
  25863. -'xrdef {Peephole Definitions-snt}{Section'tie16.12}
  25864. +'xrdef {Peephole Definitions-pg}{295}
  25865. +'xrdef {Peephole Definitions-snt}{Section'tie15.12}
  25866.  'xrdef {Expander Definitions-title}{Defining RTL Sequences for Code Generation}
  25867. -'xrdef {Expander Definitions-pg}{305}
  25868. -'xrdef {Expander Definitions-snt}{Section'tie16.13}
  25869. +'xrdef {Expander Definitions-pg}{299}
  25870. +'xrdef {Expander Definitions-snt}{Section'tie15.13}
  25871.  'xrdef {Insn Splitting-title}{Defining How to Split Instructions}
  25872. -'xrdef {Insn Splitting-pg}{308}
  25873. -'xrdef {Insn Splitting-snt}{Section'tie16.14}
  25874. +'xrdef {Insn Splitting-pg}{302}
  25875. +'xrdef {Insn Splitting-snt}{Section'tie15.14}
  25876.  'xrdef {Insn Attributes-title}{Instruction Attributes}
  25877. -'xrdef {Insn Attributes-pg}{311}
  25878. -'xrdef {Insn Attributes-snt}{Section'tie16.15}
  25879. +'xrdef {Insn Attributes-pg}{305}
  25880. +'xrdef {Insn Attributes-snt}{Section'tie15.15}
  25881.  'xrdef {Defining Attributes-title}{Defining Attributes and their Values}
  25882. -'xrdef {Defining Attributes-pg}{311}
  25883. -'xrdef {Defining Attributes-snt}{Section'tie16.15.1}
  25884. +'xrdef {Defining Attributes-pg}{305}
  25885. +'xrdef {Defining Attributes-snt}{Section'tie15.15.1}
  25886.  'xrdef {Expressions-title}{Attribute Expressions}
  25887. -'xrdef {Expressions-pg}{312}
  25888. -'xrdef {Expressions-snt}{Section'tie16.15.2}
  25889. +'xrdef {Expressions-pg}{306}
  25890. +'xrdef {Expressions-snt}{Section'tie15.15.2}
  25891.  'xrdef {Tagging Insns-title}{Assigning Attribute Values to Insns}
  25892. -'xrdef {Tagging Insns-pg}{315}
  25893. -'xrdef {Tagging Insns-snt}{Section'tie16.15.3}
  25894. +'xrdef {Tagging Insns-pg}{309}
  25895. +'xrdef {Tagging Insns-snt}{Section'tie15.15.3}
  25896.  'xrdef {Attr Example-title}{Example of Attribute Specifications}
  25897. -'xrdef {Attr Example-pg}{317}
  25898. -'xrdef {Attr Example-snt}{Section'tie16.15.4}
  25899. +'xrdef {Attr Example-pg}{311}
  25900. +'xrdef {Attr Example-snt}{Section'tie15.15.4}
  25901.  'xrdef {Insn Lengths-title}{Computing the Length of an Insn}
  25902. -'xrdef {Insn Lengths-pg}{318}
  25903. -'xrdef {Insn Lengths-snt}{Section'tie16.15.5}
  25904. +'xrdef {Insn Lengths-pg}{312}
  25905. +'xrdef {Insn Lengths-snt}{Section'tie15.15.5}
  25906.  'xrdef {Constant Attributes-title}{Constant Attributes}
  25907. -'xrdef {Constant Attributes-pg}{320}
  25908. -'xrdef {Constant Attributes-snt}{Section'tie16.15.6}
  25909. +'xrdef {Constant Attributes-pg}{314}
  25910. +'xrdef {Constant Attributes-snt}{Section'tie15.15.6}
  25911.  'xrdef {Delay Slots-title}{Delay Slot Scheduling}
  25912. -'xrdef {Delay Slots-pg}{320}
  25913. -'xrdef {Delay Slots-snt}{Section'tie16.15.7}
  25914. +'xrdef {Delay Slots-pg}{314}
  25915. +'xrdef {Delay Slots-snt}{Section'tie15.15.7}
  25916.  'xrdef {Function Units-title}{Specifying Function Units}
  25917. -'xrdef {Function Units-pg}{322}
  25918. -'xrdef {Function Units-snt}{Section'tie16.15.8}
  25919. +'xrdef {Function Units-pg}{316}
  25920. +'xrdef {Function Units-snt}{Section'tie15.15.8}
  25921.  'xrdef {Target Macros-title}{Target Description Macros}
  25922. -'xrdef {Target Macros-pg}{325}
  25923. -'xrdef {Target Macros-snt}{Chapter'tie17}
  25924. +'xrdef {Target Macros-pg}{319}
  25925. +'xrdef {Target Macros-snt}{Chapter'tie16}
  25926.  'xrdef {Driver-title}{Controlling the Compilation Driver, \file {gcc}}
  25927. -'xrdef {Driver-pg}{325}
  25928. -'xrdef {Driver-snt}{Section'tie17.1}
  25929. +'xrdef {Driver-pg}{319}
  25930. +'xrdef {Driver-snt}{Section'tie16.1}
  25931.  'xrdef {Run-time Target-title}{Run-time Target Specification}
  25932. -'xrdef {Run-time Target-pg}{329}
  25933. -'xrdef {Run-time Target-snt}{Section'tie17.2}
  25934. +'xrdef {Run-time Target-pg}{323}
  25935. +'xrdef {Run-time Target-snt}{Section'tie16.2}
  25936.  'xrdef {Storage Layout-title}{Storage Layout}
  25937. -'xrdef {Storage Layout-pg}{332}
  25938. -'xrdef {Storage Layout-snt}{Section'tie17.3}
  25939. +'xrdef {Storage Layout-pg}{326}
  25940. +'xrdef {Storage Layout-snt}{Section'tie16.3}
  25941.  'xrdef {Type Layout-title}{Layout of Source Language Data Types}
  25942. -'xrdef {Type Layout-pg}{337}
  25943. -'xrdef {Type Layout-snt}{Section'tie17.4}
  25944. +'xrdef {Type Layout-pg}{331}
  25945. +'xrdef {Type Layout-snt}{Section'tie16.4}
  25946.  'xrdef {Registers-title}{Register Usage}
  25947. -'xrdef {Registers-pg}{340}
  25948. -'xrdef {Registers-snt}{Section'tie17.5}
  25949. +'xrdef {Registers-pg}{334}
  25950. +'xrdef {Registers-snt}{Section'tie16.5}
  25951.  'xrdef {Register Basics-title}{Basic Characteristics of Registers}
  25952. -'xrdef {Register Basics-pg}{340}
  25953. -'xrdef {Register Basics-snt}{Section'tie17.5.1}
  25954. +'xrdef {Register Basics-pg}{334}
  25955. +'xrdef {Register Basics-snt}{Section'tie16.5.1}
  25956.  'xrdef {Allocation Order-title}{Order of Allocation of Registers}
  25957. -'xrdef {Allocation Order-pg}{342}
  25958. -'xrdef {Allocation Order-snt}{Section'tie17.5.2}
  25959. +'xrdef {Allocation Order-pg}{336}
  25960. +'xrdef {Allocation Order-snt}{Section'tie16.5.2}
  25961.  'xrdef {Values in Registers-title}{How Values Fit in Registers}
  25962. -'xrdef {Values in Registers-pg}{343}
  25963. -'xrdef {Values in Registers-snt}{Section'tie17.5.3}
  25964. +'xrdef {Values in Registers-pg}{336}
  25965. +'xrdef {Values in Registers-snt}{Section'tie16.5.3}
  25966.  'xrdef {Leaf Functions-title}{Handling Leaf Functions}
  25967. -'xrdef {Leaf Functions-pg}{344}
  25968. -'xrdef {Leaf Functions-snt}{Section'tie17.5.4}
  25969. +'xrdef {Leaf Functions-pg}{338}
  25970. +'xrdef {Leaf Functions-snt}{Section'tie16.5.4}
  25971.  'xrdef {Stack Registers-title}{Registers That Form a Stack}
  25972. -'xrdef {Stack Registers-pg}{345}
  25973. -'xrdef {Stack Registers-snt}{Section'tie17.5.5}
  25974. +'xrdef {Stack Registers-pg}{339}
  25975. +'xrdef {Stack Registers-snt}{Section'tie16.5.5}
  25976.  'xrdef {Obsolete Register Macros-title}{Obsolete Macros for Controlling Register Usage}
  25977. -'xrdef {Obsolete Register Macros-pg}{346}
  25978. -'xrdef {Obsolete Register Macros-snt}{Section'tie17.5.6}
  25979. +'xrdef {Obsolete Register Macros-pg}{339}
  25980. +'xrdef {Obsolete Register Macros-snt}{Section'tie16.5.6}
  25981.  'xrdef {Register Classes-title}{Register Classes}
  25982. -'xrdef {Register Classes-pg}{347}
  25983. -'xrdef {Register Classes-snt}{Section'tie17.6}
  25984. +'xrdef {Register Classes-pg}{340}
  25985. +'xrdef {Register Classes-snt}{Section'tie16.6}
  25986.  'xrdef {Stack and Calling-title}{Stack Layout and Calling Conventions}
  25987. -'xrdef {Stack and Calling-pg}{353}
  25988. -'xrdef {Stack and Calling-snt}{Section'tie17.7}
  25989. +'xrdef {Stack and Calling-pg}{347}
  25990. +'xrdef {Stack and Calling-snt}{Section'tie16.7}
  25991.  'xrdef {Frame Layout-title}{Basic Stack Layout}
  25992. -'xrdef {Frame Layout-pg}{353}
  25993. -'xrdef {Frame Layout-snt}{Section'tie17.7.1}
  25994. +'xrdef {Frame Layout-pg}{347}
  25995. +'xrdef {Frame Layout-snt}{Section'tie16.7.1}
  25996.  'xrdef {Frame Registers-title}{Registers That Address the Stack Frame}
  25997. -'xrdef {Frame Registers-pg}{355}
  25998. -'xrdef {Frame Registers-snt}{Section'tie17.7.2}
  25999. +'xrdef {Frame Registers-pg}{349}
  26000. +'xrdef {Frame Registers-snt}{Section'tie16.7.2}
  26001.  'xrdef {Elimination-title}{Eliminating Frame Pointer and Arg Pointer}
  26002. -'xrdef {Elimination-pg}{357}
  26003. -'xrdef {Elimination-snt}{Section'tie17.7.3}
  26004. +'xrdef {Elimination-pg}{350}
  26005. +'xrdef {Elimination-snt}{Section'tie16.7.3}
  26006.  'xrdef {Stack Arguments-title}{Passing Function Arguments on the Stack}
  26007. -'xrdef {Stack Arguments-pg}{358}
  26008. -'xrdef {Stack Arguments-snt}{Section'tie17.7.4}
  26009. +'xrdef {Stack Arguments-pg}{352}
  26010. +'xrdef {Stack Arguments-snt}{Section'tie16.7.4}
  26011.  'xrdef {Register Arguments-title}{Passing Arguments in Registers}
  26012. -'xrdef {Register Arguments-pg}{360}
  26013. -'xrdef {Register Arguments-snt}{Section'tie17.7.5}
  26014. +'xrdef {Register Arguments-pg}{354}
  26015. +'xrdef {Register Arguments-snt}{Section'tie16.7.5}
  26016.  'xrdef {Scalar Return-title}{How Scalar Function Values Are Returned}
  26017. -'xrdef {Scalar Return-pg}{363}
  26018. -'xrdef {Scalar Return-snt}{Section'tie17.7.6}
  26019. +'xrdef {Scalar Return-pg}{357}
  26020. +'xrdef {Scalar Return-snt}{Section'tie16.7.6}
  26021.  'xrdef {Aggregate Return-title}{How Large Values Are Returned}
  26022. -'xrdef {Aggregate Return-pg}{365}
  26023. -'xrdef {Aggregate Return-snt}{Section'tie17.7.7}
  26024. +'xrdef {Aggregate Return-pg}{359}
  26025. +'xrdef {Aggregate Return-snt}{Section'tie16.7.7}
  26026.  'xrdef {Caller Saves-title}{Caller-Saves Register Allocation}
  26027. -'xrdef {Caller Saves-pg}{366}
  26028. -'xrdef {Caller Saves-snt}{Section'tie17.7.8}
  26029. +'xrdef {Caller Saves-pg}{360}
  26030. +'xrdef {Caller Saves-snt}{Section'tie16.7.8}
  26031.  'xrdef {Function Entry-title}{Function Entry and Exit}
  26032. -'xrdef {Function Entry-pg}{367}
  26033. -'xrdef {Function Entry-snt}{Section'tie17.7.9}
  26034. +'xrdef {Function Entry-pg}{361}
  26035. +'xrdef {Function Entry-snt}{Section'tie16.7.9}
  26036.  'xrdef {Profiling-title}{Generating Code for Profiling}
  26037. -'xrdef {Profiling-pg}{370}
  26038. -'xrdef {Profiling-snt}{Section'tie17.7.10}
  26039. +'xrdef {Profiling-pg}{364}
  26040. +'xrdef {Profiling-snt}{Section'tie16.7.10}
  26041.  'xrdef {Varargs-title}{Implementing the Varargs Macros}
  26042. -'xrdef {Varargs-pg}{371}
  26043. -'xrdef {Varargs-snt}{Section'tie17.8}
  26044. +'xrdef {Varargs-pg}{365}
  26045. +'xrdef {Varargs-snt}{Section'tie16.8}
  26046.  'xrdef {Trampolines-title}{Trampolines for Nested Functions}
  26047. -'xrdef {Trampolines-pg}{373}
  26048. -'xrdef {Trampolines-snt}{Section'tie17.9}
  26049. +'xrdef {Trampolines-pg}{367}
  26050. +'xrdef {Trampolines-snt}{Section'tie16.9}
  26051.  'xrdef {Library Calls-title}{Implicit Calls to Library Routines}
  26052. -'xrdef {Library Calls-pg}{376}
  26053. -'xrdef {Library Calls-snt}{Section'tie17.10}
  26054. +'xrdef {Library Calls-pg}{370}
  26055. +'xrdef {Library Calls-snt}{Section'tie16.10}
  26056.  'xrdef {Addressing Modes-title}{Addressing Modes}
  26057. -'xrdef {Addressing Modes-pg}{379}
  26058. -'xrdef {Addressing Modes-snt}{Section'tie17.11}
  26059. +'xrdef {Addressing Modes-pg}{373}
  26060. +'xrdef {Addressing Modes-snt}{Section'tie16.11}
  26061.  'xrdef {Condition Code-title}{Condition Code Status}
  26062. -'xrdef {Condition Code-pg}{382}
  26063. -'xrdef {Condition Code-snt}{Section'tie17.12}
  26064. +'xrdef {Condition Code-pg}{376}
  26065. +'xrdef {Condition Code-snt}{Section'tie16.12}
  26066.  'xrdef {Costs-title}{Describing Relative Costs of Operations}
  26067. -'xrdef {Costs-pg}{385}
  26068. -'xrdef {Costs-snt}{Section'tie17.13}
  26069. +'xrdef {Costs-pg}{378}
  26070. +'xrdef {Costs-snt}{Section'tie16.13}
  26071.  'xrdef {Sections-title}{Dividing the Output into Sections (Texts, Data, \dots{})}
  26072. -'xrdef {Sections-pg}{388}
  26073. -'xrdef {Sections-snt}{Section'tie17.14}
  26074. +'xrdef {Sections-pg}{382}
  26075. +'xrdef {Sections-snt}{Section'tie16.14}
  26076.  'xrdef {PIC-title}{Position Independent Code}
  26077. -'xrdef {PIC-pg}{390}
  26078. -'xrdef {PIC-snt}{Section'tie17.15}
  26079. +'xrdef {PIC-pg}{383}
  26080. +'xrdef {PIC-snt}{Section'tie16.15}
  26081.  'xrdef {Assembler Format-title}{Defining the Output Assembler Language}
  26082. -'xrdef {Assembler Format-pg}{391}
  26083. -'xrdef {Assembler Format-snt}{Section'tie17.16}
  26084. +'xrdef {Assembler Format-pg}{384}
  26085. +'xrdef {Assembler Format-snt}{Section'tie16.16}
  26086.  'xrdef {File Framework-title}{The Overall Framework of an Assembler File}
  26087. -'xrdef {File Framework-pg}{391}
  26088. -'xrdef {File Framework-snt}{Section'tie17.16.1}
  26089. +'xrdef {File Framework-pg}{385}
  26090. +'xrdef {File Framework-snt}{Section'tie16.16.1}
  26091.  'xrdef {Data Output-title}{Output of Data}
  26092. -'xrdef {Data Output-pg}{393}
  26093. -'xrdef {Data Output-snt}{Section'tie17.16.2}
  26094. +'xrdef {Data Output-pg}{386}
  26095. +'xrdef {Data Output-snt}{Section'tie16.16.2}
  26096.  'xrdef {Uninitialized Data-title}{Output of Uninitialized Variables}
  26097. -'xrdef {Uninitialized Data-pg}{395}
  26098. -'xrdef {Uninitialized Data-snt}{Section'tie17.16.3}
  26099. +'xrdef {Uninitialized Data-pg}{389}
  26100. +'xrdef {Uninitialized Data-snt}{Section'tie16.16.3}
  26101.  'xrdef {Label Output-title}{Output and Generation of Labels}
  26102. -'xrdef {Label Output-pg}{396}
  26103. -'xrdef {Label Output-snt}{Section'tie17.16.4}
  26104. +'xrdef {Label Output-pg}{390}
  26105. +'xrdef {Label Output-snt}{Section'tie16.16.4}
  26106.  'xrdef {Initialization-title}{How Initialization Functions Are Handled}
  26107. -'xrdef {Initialization-pg}{399}
  26108. -'xrdef {Initialization-snt}{Section'tie17.16.5}
  26109. +'xrdef {Initialization-pg}{393}
  26110. +'xrdef {Initialization-snt}{Section'tie16.16.5}
  26111.  'xrdef {Macros for Initialization-title}{Macros Controlling Initialization Routines}
  26112. -'xrdef {Macros for Initialization-pg}{402}
  26113. -'xrdef {Macros for Initialization-snt}{Section'tie17.16.6}
  26114. +'xrdef {Macros for Initialization-pg}{395}
  26115. +'xrdef {Macros for Initialization-snt}{Section'tie16.16.6}
  26116.  'xrdef {Instruction Output-title}{Output of Assembler Instructions}
  26117. -'xrdef {Instruction Output-pg}{403}
  26118. -'xrdef {Instruction Output-snt}{Section'tie17.16.7}
  26119. +'xrdef {Instruction Output-pg}{397}
  26120. +'xrdef {Instruction Output-snt}{Section'tie16.16.7}
  26121.  'xrdef {Dispatch Tables-title}{Output of Dispatch Tables}
  26122. -'xrdef {Dispatch Tables-pg}{406}
  26123. -'xrdef {Dispatch Tables-snt}{Section'tie17.16.8}
  26124. +'xrdef {Dispatch Tables-pg}{400}
  26125. +'xrdef {Dispatch Tables-snt}{Section'tie16.16.8}
  26126.  'xrdef {Alignment Output-title}{Assembler Commands for Alignment}
  26127. -'xrdef {Alignment Output-pg}{407}
  26128. -'xrdef {Alignment Output-snt}{Section'tie17.16.9}
  26129. +'xrdef {Alignment Output-pg}{401}
  26130. +'xrdef {Alignment Output-snt}{Section'tie16.16.9}
  26131.  'xrdef {Debugging Info-title}{Controlling Debugging Information Format}
  26132. -'xrdef {Debugging Info-pg}{408}
  26133. -'xrdef {Debugging Info-snt}{Section'tie17.17}
  26134. +'xrdef {Debugging Info-pg}{402}
  26135. +'xrdef {Debugging Info-snt}{Section'tie16.17}
  26136.  'xrdef {All Debuggers-title}{Macros Affecting All Debugging Formats}
  26137. -'xrdef {All Debuggers-pg}{408}
  26138. -'xrdef {All Debuggers-snt}{Section'tie17.17.1}
  26139. +'xrdef {All Debuggers-pg}{402}
  26140. +'xrdef {All Debuggers-snt}{Section'tie16.17.1}
  26141.  'xrdef {DBX Options-title}{Specific Options for DBX Output}
  26142. -'xrdef {DBX Options-pg}{409}
  26143. -'xrdef {DBX Options-snt}{Section'tie17.17.2}
  26144. +'xrdef {DBX Options-pg}{403}
  26145. +'xrdef {DBX Options-snt}{Section'tie16.17.2}
  26146.  'xrdef {DBX Hooks-title}{Open-Ended Hooks for DBX Format}
  26147. -'xrdef {DBX Hooks-pg}{411}
  26148. -'xrdef {DBX Hooks-snt}{Section'tie17.17.3}
  26149. +'xrdef {DBX Hooks-pg}{404}
  26150. +'xrdef {DBX Hooks-snt}{Section'tie16.17.3}
  26151.  'xrdef {File Names and DBX-title}{File Names in DBX Format}
  26152. -'xrdef {File Names and DBX-pg}{413}
  26153. -'xrdef {File Names and DBX-snt}{Section'tie17.17.4}
  26154. +'xrdef {File Names and DBX-pg}{406}
  26155. +'xrdef {File Names and DBX-snt}{Section'tie16.17.4}
  26156.  'xrdef {SDB and DWARF-title}{Macros for SDB and DWARF Output}
  26157. -'xrdef {SDB and DWARF-pg}{414}
  26158. -'xrdef {SDB and DWARF-snt}{Section'tie17.17.5}
  26159. +'xrdef {SDB and DWARF-pg}{407}
  26160. +'xrdef {SDB and DWARF-snt}{Section'tie16.17.5}
  26161.  'xrdef {Cross-compilation-title}{Cross Compilation and Floating Point}
  26162. -'xrdef {Cross-compilation-pg}{415}
  26163. -'xrdef {Cross-compilation-snt}{Section'tie17.18}
  26164. +'xrdef {Cross-compilation-pg}{408}
  26165. +'xrdef {Cross-compilation-snt}{Section'tie16.18}
  26166.  'xrdef {Misc-title}{Miscellaneous Parameters}
  26167. -'xrdef {Misc-pg}{417}
  26168. -'xrdef {Misc-snt}{Section'tie17.19}
  26169. +'xrdef {Misc-pg}{410}
  26170. +'xrdef {Misc-snt}{Section'tie16.19}
  26171.  'xrdef {Config-title}{The Configuration File}
  26172. -'xrdef {Config-pg}{425}
  26173. -'xrdef {Config-snt}{Chapter'tie18}
  26174. +'xrdef {Config-pg}{417}
  26175. +'xrdef {Config-snt}{Chapter'tie17}
  26176.  'xrdef {Index-title}{Index}
  26177. -'xrdef {Index-pg}{429}
  26178. +'xrdef {Index-pg}{421}
  26179.  'xrdef {Index-snt}{}
  26180. diff -r -u -H -N gcc-2.6.3/gcc.cps gcc-i2.6.3/gcc.cps
  26181. --- gcc-2.6.3/gcc.cps    Fri Nov 11 18:44:28 1994
  26182. +++ gcc-i2.6.3/gcc.cps    Thu Jul 14 22:07:29 1994
  26183. @@ -1,1866 +1,1856 @@
  26184.  \initial {!}
  26185. -\entry {\samp {!} in constraint}{278}
  26186. +\entry {\samp {!} in constraint}{272}
  26187.  \initial {#}
  26188. -\entry {\samp {#} in constraint}{279}
  26189. -\entry {\code {#} in template}{270}
  26190. -\entry {\code {#pragma}}{422}
  26191. -\entry {\code {#pragma implementation}, implied}{163}
  26192. -\entry {\code {#pragma}, reason for not using}{141}
  26193. +\entry {\samp {#} in constraint}{273}
  26194. +\entry {\code {#} in template}{264}
  26195. +\entry {\code {#pragma}}{414}
  26196. +\entry {\code {#pragma implementation}, implied}{159}
  26197. +\entry {\code {#pragma}, reason for not using}{136}
  26198.  \initial {$}
  26199. -\entry {$}{142}
  26200. +\entry {$}{138}
  26201.  \initial {%}
  26202. -\entry {\samp {%} in constraint}{279}
  26203. -\entry {\samp {%} in template}{269}
  26204. +\entry {\samp {%} in constraint}{273}
  26205. +\entry {\samp {%} in template}{263}
  26206.  \initial {&}
  26207. -\entry {\samp {&} in constraint}{279}
  26208. +\entry {\samp {&} in constraint}{273}
  26209.  \initial {'}
  26210. -\entry {'}{182}
  26211. +\entry {'}{176}
  26212.  \initial {(}
  26213. -\entry {(nil)}{222}
  26214. +\entry {(nil)}{216}
  26215.  \initial {*}
  26216. -\entry {\samp {*} in constraint}{279}
  26217. -\entry {\code {*} in template}{271}
  26218. +\entry {\samp {*} in constraint}{273}
  26219. +\entry {\code {*} in template}{265}
  26220.  \initial {-}
  26221. -\entry {\code {-lgcc}, use with \code {-nostdlib}}{52}
  26222. -\entry {\code {-nostdlib} and unresolved references}{52}
  26223. +\entry {\code {-lgcc}, use with \code {-nostdlib}}{49}
  26224. +\entry {\code {-nostdlib} and unresolved references}{49}
  26225.  \initial {/}
  26226. -\entry {\samp {/i} in RTL dump}{225}
  26227. -\entry {\samp {/s} in RTL dump}{225, 226}
  26228. -\entry {\samp {/u} in RTL dump}{225}
  26229. -\entry {\samp {/v} in RTL dump}{225}
  26230. +\entry {\samp {/i} in RTL dump}{219}
  26231. +\entry {\samp {/s} in RTL dump}{219, 220}
  26232. +\entry {\samp {/u} in RTL dump}{219}
  26233. +\entry {\samp {/v} in RTL dump}{219}
  26234.  \initial {=}
  26235. -\entry {\samp {=} in constraint}{279}
  26236. +\entry {\samp {=} in constraint}{273}
  26237.  \initial {?}
  26238. -\entry {\samp {?} in constraint}{278}
  26239. -\entry {\code {?:} extensions}{127, 128}
  26240. -\entry {?: side effect}{129}
  26241. +\entry {\samp {?} in constraint}{272}
  26242. +\entry {\code {?:} extensions}{123, 124}
  26243. +\entry {?: side effect}{125}
  26244.  \initial {{\_}}
  26245. -\entry {\samp {{\_}} in variables in macros}{126}
  26246. -\entry {\code {{\_}{\_}bb{\_}init{\_}func}}{370}
  26247. -\entry {\code {{\_}{\_}builtin{\_}apply}}{125}
  26248. -\entry {\code {{\_}{\_}builtin{\_}apply{\_}args}}{125}
  26249. -\entry {\code {{\_}{\_}builtin{\_}args{\_}info}}{372}
  26250. -\entry {\code {{\_}{\_}builtin{\_}classify{\_}type}}{372}
  26251. -\entry {\code {{\_}{\_}builtin{\_}next{\_}arg}}{372}
  26252. -\entry {\code {{\_}{\_}builtin{\_}return}}{125}
  26253. -\entry {\code {{\_}{\_}builtin{\_}saveregs}}{371}
  26254. -\entry {\code {{\_}{\_}CTOR{\_}LIST{\_}{\_}}}{400}
  26255. -\entry {\code {{\_}{\_}DTOR{\_}LIST{\_}{\_}}}{400}
  26256. -\entry {\code {{\_}{\_}main}}{117}
  26257. +\entry {\samp {{\_}} in variables in macros}{122}
  26258. +\entry {\code {{\_}{\_}bb{\_}init{\_}func}}{364}
  26259. +\entry {\code {{\_}{\_}builtin{\_}apply}}{121}
  26260. +\entry {\code {{\_}{\_}builtin{\_}apply{\_}args}}{121}
  26261. +\entry {\code {{\_}{\_}builtin{\_}args{\_}info}}{366}
  26262. +\entry {\code {{\_}{\_}builtin{\_}classify{\_}type}}{366}
  26263. +\entry {\code {{\_}{\_}builtin{\_}next{\_}arg}}{366}
  26264. +\entry {\code {{\_}{\_}builtin{\_}return}}{121}
  26265. +\entry {\code {{\_}{\_}builtin{\_}saveregs}}{365}
  26266. +\entry {\code {{\_}{\_}CTOR{\_}LIST{\_}{\_}}}{393}
  26267. +\entry {\code {{\_}{\_}DTOR{\_}LIST{\_}{\_}}}{393}
  26268. +\entry {\code {{\_}{\_}main}}{112}
  26269.  \initial {{\tt\char43}}
  26270. -\entry {\samp {{\tt\char43}} in constraint}{279}
  26271. +\entry {\samp {{\tt\char43}} in constraint}{273}
  26272.  \initial {{\tt\gtr}}
  26273. -\entry {\samp {{\tt\gtr}} in constraint}{273}
  26274. -\entry {\code {{\tt\gtr}?}}{161}
  26275. +\entry {\samp {{\tt\gtr}} in constraint}{267}
  26276. +\entry {\code {{\tt\gtr}?}}{157}
  26277.  \initial {{\tt\indexbackslash }}
  26278. -\entry {{\tt\indexbackslash }}{270}
  26279. +\entry {{\tt\indexbackslash }}{264}
  26280.  \initial {{\tt\less}}
  26281. -\entry {\samp {{\tt\less}} in constraint}{273}
  26282. -\entry {\code {{\tt\less}?}}{161}
  26283. +\entry {\samp {{\tt\less}} in constraint}{267}
  26284. +\entry {\code {{\tt\less}?}}{157}
  26285.  \initial {0}
  26286. -\entry {\samp {0} in constraint}{274}
  26287. +\entry {\samp {0} in constraint}{268}
  26288.  \initial {A}
  26289. -\entry {\code {abort}}{27, 211}
  26290. -\entry {\code {abs}}{27, 240}
  26291. -\entry {\code {abs} and attributes}{313}
  26292. -\entry {\code {abs\var {m}2} instruction pattern}{289}
  26293. -\entry {absolute value}{240}
  26294. -\entry {access to operands}{222}
  26295. -\entry {accessors}{222}
  26296. -\entry {\code {ACCUMULATE{\_}OUTGOING{\_}ARGS}}{359}
  26297. -\entry {\code {ACCUMULATE{\_}OUTGOING{\_}ARGS} and stack frames}{368}
  26298. -\entry {\code {ADDITIONAL{\_}REGISTER{\_}NAMES}}{403}
  26299. -\entry {\code {add\var {m}3} instruction pattern}{288}
  26300. -\entry {\code {addr{\_}diff{\_}vec}}{249}
  26301. -\entry {\code {addr{\_}diff{\_}vec}, length of}{319}
  26302. -\entry {\code {addr{\_}vec}}{249}
  26303. -\entry {\code {addr{\_}vec}, length of}{319}
  26304. -\entry {\code {address}}{269}
  26305. -\entry {address constraints}{275}
  26306. -\entry {address of a label}{121}
  26307. -\entry {\code {ADDRESS{\_}COST}}{385}
  26308. -\entry {\code {address{\_}operand}}{275}
  26309. -\entry {addressing modes}{379}
  26310. -\entry {\code {ADJUST{\_}COST}}{387}
  26311. -\entry {\code {ADJUST{\_}INSN{\_}LENGTH}}{319}
  26312. -\entry {aggregates as return values}{365}
  26313. -\entry {\code {aligned} attribute}{143}
  26314. -\entry {alignment}{143}
  26315. -\entry {\code {ALL{\_}REGS}}{347}
  26316. -\entry {Alliant}{178}
  26317. -\entry {\code {alloca}}{27}
  26318. -\entry {\code {alloca} and SunOs}{93}
  26319. -\entry {\code {alloca} vs variable-length arrays}{131}
  26320. -\entry {\code {alloca}, for SunOs}{113}
  26321. -\entry {\code {alloca}, for Unos}{101}
  26322. -\entry {\code {allocate{\_}stack} instruction pattern}{295}
  26323. -\entry {\code {ALLOCATE{\_}TRAMPOLINE}}{374}
  26324. -\entry {alternate keywords}{155}
  26325. -\entry {AMD29K options}{61}
  26326. -\entry {analysis, data flow}{217}
  26327. -\entry {\code {and}}{240}
  26328. -\entry {\code {and} and attributes}{313}
  26329. -\entry {\code {and}, canonicalization of}{300}
  26330. -\entry {\code {and\var {m}3} instruction pattern}{288}
  26331. -\entry {ANSI support}{27}
  26332. -\entry {apostrophes}{182}
  26333. -\entry {\code {APPLY{\_}RESULT{\_}SIZE}}{365}
  26334. -\entry {\code {ARG{\_}POINTER{\_}REGNUM}}{356}
  26335. -\entry {\code {ARG{\_}POINTER{\_}REGNUM} and virtual registers}{235}
  26336. -\entry {\code {arg{\_}pointer{\_}rtx}}{356}
  26337. -\entry {\code {ARGS{\_}GROW{\_}DOWNWARD}}{354}
  26338. -\entry {argument passing}{213}
  26339. -\entry {arguments in frame (88k)}{64}
  26340. -\entry {arguments in registers}{360}
  26341. -\entry {arguments on stack}{358}
  26342. -\entry {arithmetic libraries}{214}
  26343. -\entry {arithmetic shift}{240}
  26344. -\entry {arithmetic simplifications}{215}
  26345. -\entry {arithmetic, in RTL}{238}
  26346. -\entry {ARM options}{63}
  26347. -\entry {arrays of length zero}{130}
  26348. -\entry {arrays of variable length}{131}
  26349. -\entry {arrays, non-lvalue}{133}
  26350. -\entry {\code {ashift}}{240}
  26351. -\entry {\code {ashift} and attributes}{313}
  26352. -\entry {\code {ashiftrt}}{240}
  26353. -\entry {\code {ashiftrt} and attributes}{313}
  26354. -\entry {\code {ashl\var {m}3} instruction pattern}{288}
  26355. -\entry {\code {ashr\var {m}3} instruction pattern}{289}
  26356. -\entry {\code {asm} expressions}{147}
  26357. -\entry {\code {ASM{\_}APP{\_}OFF}}{392}
  26358. -\entry {\code {ASM{\_}APP{\_}ON}}{392}
  26359. -\entry {\code {ASM{\_}BYTE{\_}OP}}{393}
  26360. -\entry {\code {ASM{\_}CLOSE{\_}PAREN}}{394}
  26361. -\entry {\code {ASM{\_}COMMENT{\_}START}}{392}
  26362. -\entry {\code {ASM{\_}DECLARE{\_}FUNCTION{\_}NAME}}{396}
  26363. -\entry {\code {ASM{\_}DECLARE{\_}FUNCTION{\_}SIZE}}{397}
  26364. -\entry {\code {ASM{\_}DECLARE{\_}OBJECT{\_}NAME}}{397}
  26365. -\entry {\code {ASM{\_}FILE{\_}END}}{391}
  26366. -\entry {\code {ASM{\_}FILE{\_}START}}{391}
  26367. -\entry {\code {ASM{\_}FINAL{\_}SPEC}}{326}
  26368. -\entry {\code {ASM{\_}FINISH{\_}DECLARE{\_}OBJECT}}{397}
  26369. -\entry {\code {ASM{\_}FORMAT{\_}PRIVATE{\_}NAME}}{398}
  26370. -\entry {\code {asm{\_}fprintf}}{405}
  26371. -\entry {\code {ASM{\_}GENERATE{\_}INTERNAL{\_}LABEL}}{398}
  26372. -\entry {\code {ASM{\_}GLOBALIZE{\_}LABEL}}{397}
  26373. -\entry {\code {ASM{\_}IDENTIFY{\_}GCC}}{391}
  26374. -\entry {\code {asm{\_}input}}{249}
  26375. -\entry {\code {ASM{\_}NO{\_}SKIP{\_}IN{\_}TEXT}}{408}
  26376. -\entry {\code {asm{\_}noperands}}{255}
  26377. -\entry {\code {ASM{\_}OPEN{\_}PAREN}}{394}
  26378. -\entry {\code {asm{\_}operands}, RTL sharing}{261}
  26379. -\entry {\code {asm{\_}operands}, usage}{250}
  26380. -\entry {\code {ASM{\_}OUTPUT{\_}ADDR{\_}DIFF{\_}ELT}}{406}
  26381. -\entry {\code {ASM{\_}OUTPUT{\_}ADDR{\_}VEC{\_}ELT}}{407}
  26382. -\entry {\code {ASM{\_}OUTPUT{\_}ALIGN}}{408}
  26383. -\entry {\code {ASM{\_}OUTPUT{\_}ALIGN{\_}CODE}}{407}
  26384. -\entry {\code {ASM{\_}OUTPUT{\_}ALIGNED{\_}COMMON}}{395}
  26385. -\entry {\code {ASM{\_}OUTPUT{\_}ALIGNED{\_}LOCAL}}{396}
  26386. -\entry {\code {ASM{\_}OUTPUT{\_}ASCII}}{393}
  26387. -\entry {\code {ASM{\_}OUTPUT{\_}BYTE}}{393}
  26388. -\entry {\code {ASM{\_}OUTPUT{\_}CASE{\_}END}}{407}
  26389. -\entry {\code {ASM{\_}OUTPUT{\_}CASE{\_}LABEL}}{407}
  26390. -\entry {\code {ASM{\_}OUTPUT{\_}CHAR}}{393}
  26391. -\entry {\code {ASM{\_}OUTPUT{\_}COMMON}}{395}
  26392. -\entry {\code {ASM{\_}OUTPUT{\_}CONSTRUCTOR}}{402}
  26393. -\entry {\code {ASM{\_}OUTPUT{\_}DEF}}{399}
  26394. -\entry {\code {ASM{\_}OUTPUT{\_}DESTRUCTOR}}{403}
  26395. -\entry {\code {ASM{\_}OUTPUT{\_}DOUBLE}}{393}
  26396. -\entry {\code {ASM{\_}OUTPUT{\_}DOUBLE{\_}INT}}{393}
  26397. -\entry {\code {ASM{\_}OUTPUT{\_}EXTERNAL}}{397}
  26398. -\entry {\code {ASM{\_}OUTPUT{\_}EXTERNAL{\_}LIBCALL}}{397}
  26399. -\entry {\code {ASM{\_}OUTPUT{\_}FLOAT}}{393}
  26400. -\entry {\code {ASM{\_}OUTPUT{\_}IDENT}}{392}
  26401. -\entry {\code {ASM{\_}OUTPUT{\_}INT}}{393}
  26402. -\entry {\code {ASM{\_}OUTPUT{\_}INTERNAL{\_}LABEL}}{398}
  26403. -\entry {\code {ASM{\_}OUTPUT{\_}LABEL}}{396}
  26404. -\entry {\code {ASM{\_}OUTPUT{\_}LABELREF}}{398}
  26405. -\entry {\code {ASM{\_}OUTPUT{\_}LOCAL}}{396}
  26406. -\entry {\code {ASM{\_}OUTPUT{\_}LONG{\_}DOUBLE}}{393}
  26407. -\entry {\code {ASM{\_}OUTPUT{\_}LOOP{\_}ALIGN}}{407}
  26408. -\entry {\code {ASM{\_}OUTPUT{\_}OPCODE}}{404}
  26409. -\entry {\code {ASM{\_}OUTPUT{\_}POOL{\_}PROLOGUE}}{394}
  26410. -\entry {\code {ASM{\_}OUTPUT{\_}QUADRUPLE{\_}INT}}{393}
  26411. -\entry {\code {ASM{\_}OUTPUT{\_}REG{\_}POP}}{406}
  26412. -\entry {\code {ASM{\_}OUTPUT{\_}REG{\_}PUSH}}{406}
  26413. -\entry {\code {ASM{\_}OUTPUT{\_}SECTION{\_}NAME}}{392}
  26414. -\entry {\code {ASM{\_}OUTPUT{\_}SHARED{\_}COMMON}}{396}
  26415. -\entry {\code {ASM{\_}OUTPUT{\_}SHARED{\_}LOCAL}}{396}
  26416. -\entry {\code {ASM{\_}OUTPUT{\_}SHORT}}{393}
  26417. -\entry {\code {ASM{\_}OUTPUT{\_}SKIP}}{408}
  26418. -\entry {\code {ASM{\_}OUTPUT{\_}SOURCE{\_}FILENAME}}{392}
  26419. -\entry {\code {ASM{\_}OUTPUT{\_}SOURCE{\_}LINE}}{392}
  26420. -\entry {\code {ASM{\_}OUTPUT{\_}SPECIAL{\_}POOL{\_}ENTRY}}{394}
  26421. -\entry {\code {ASM{\_}SPEC}}{326}
  26422. -\entry {\code {ASM{\_}STABD{\_}OP}}{410}
  26423. -\entry {\code {ASM{\_}STABN{\_}OP}}{410}
  26424. -\entry {\code {ASM{\_}STABS{\_}OP}}{410}
  26425. -\entry {\code {assemble{\_}name}}{396}
  26426. -\entry {assembler format}{391}
  26427. -\entry {assembler instructions}{147}
  26428. -\entry {assembler instructions in RTL}{250}
  26429. -\entry {assembler names for identifiers}{151}
  26430. -\entry {assembler syntax, 88k}{65}
  26431. -\entry {\code {ASSEMBLER{\_}DIALECT}}{406}
  26432. -\entry {assembly code, invalid}{193}
  26433. -\entry {assigning attribute values to insns}{315}
  26434. -\entry {asterisk in template}{271}
  26435. -\entry {\code {atof}}{415}
  26436. -\entry {\code {attr}}{316}
  26437. -\entry {\code {attr{\_}flag}}{314}
  26438. -\entry {attribute expressions}{312}
  26439. -\entry {attribute of variables}{143}
  26440. -\entry {attribute specifications}{317}
  26441. -\entry {attribute specifications example}{317}
  26442. -\entry {attributes, defining}{311}
  26443. -\entry {autoincrement addressing, availability}{211}
  26444. -\entry {autoincrement/decrement addressing}{273}
  26445. -\entry {autoincrement/decrement analysis}{217}
  26446. -\entry {automatic \code {inline} for C{\tt\char43}{\tt\char43} member fns}{146}
  26447. +\entry {\code {abort}}{25, 205}
  26448. +\entry {\code {abs}}{25, 234}
  26449. +\entry {\code {abs} and attributes}{307}
  26450. +\entry {\code {abs\var {m}2} instruction pattern}{283}
  26451. +\entry {absolute value}{234}
  26452. +\entry {access to operands}{216}
  26453. +\entry {accessors}{216}
  26454. +\entry {\code {ACCUMULATE{\_}OUTGOING{\_}ARGS}}{352}
  26455. +\entry {\code {ACCUMULATE{\_}OUTGOING{\_}ARGS} and stack frames}{362}
  26456. +\entry {\code {ADDITIONAL{\_}REGISTER{\_}NAMES}}{397}
  26457. +\entry {\code {add\var {m}3} instruction pattern}{282}
  26458. +\entry {\code {addr{\_}diff{\_}vec}}{243}
  26459. +\entry {\code {addr{\_}diff{\_}vec}, length of}{313}
  26460. +\entry {\code {addr{\_}vec}}{243}
  26461. +\entry {\code {addr{\_}vec}, length of}{313}
  26462. +\entry {\code {address}}{263}
  26463. +\entry {address constraints}{269}
  26464. +\entry {address of a label}{117}
  26465. +\entry {\code {ADDRESS{\_}COST}}{379}
  26466. +\entry {\code {address{\_}operand}}{269}
  26467. +\entry {addressing modes}{373}
  26468. +\entry {\code {ADJUST{\_}COST}}{381}
  26469. +\entry {\code {ADJUST{\_}INSN{\_}LENGTH}}{313}
  26470. +\entry {aggregates as return values}{359}
  26471. +\entry {\code {aligned} attribute}{139}
  26472. +\entry {alignment}{139}
  26473. +\entry {\code {ALL{\_}REGS}}{341}
  26474. +\entry {Alliant}{172}
  26475. +\entry {\code {alloca}}{25}
  26476. +\entry {\code {alloca} and SunOs}{89}
  26477. +\entry {\code {alloca} vs variable-length arrays}{127}
  26478. +\entry {\code {alloca}, for SunOs}{108}
  26479. +\entry {\code {alloca}, for Unos}{96}
  26480. +\entry {\code {allocate{\_}stack} instruction pattern}{289}
  26481. +\entry {\code {ALLOCATE{\_}TRAMPOLINE}}{368}
  26482. +\entry {alternate keywords}{151}
  26483. +\entry {AMD29K options}{58}
  26484. +\entry {analysis, data flow}{211}
  26485. +\entry {\code {and}}{234}
  26486. +\entry {\code {and} and attributes}{307}
  26487. +\entry {\code {and}, canonicalization of}{294}
  26488. +\entry {\code {and\var {m}3} instruction pattern}{282}
  26489. +\entry {ANSI support}{25}
  26490. +\entry {apostrophes}{176}
  26491. +\entry {\code {APPLY{\_}RESULT{\_}SIZE}}{358}
  26492. +\entry {\code {ARG{\_}POINTER{\_}REGNUM}}{349}
  26493. +\entry {\code {ARG{\_}POINTER{\_}REGNUM} and virtual registers}{229}
  26494. +\entry {\code {arg{\_}pointer{\_}rtx}}{350}
  26495. +\entry {\code {ARGS{\_}GROW{\_}DOWNWARD}}{347}
  26496. +\entry {argument passing}{207}
  26497. +\entry {arguments in frame (88k)}{61}
  26498. +\entry {arguments in registers}{354}
  26499. +\entry {arguments on stack}{352}
  26500. +\entry {arithmetic libraries}{208}
  26501. +\entry {arithmetic shift}{234}
  26502. +\entry {arithmetic simplifications}{209}
  26503. +\entry {arithmetic, in RTL}{232}
  26504. +\entry {ARM options}{60}
  26505. +\entry {arrays of length zero}{126}
  26506. +\entry {arrays of variable length}{127}
  26507. +\entry {arrays, non-lvalue}{129}
  26508. +\entry {\code {ashift}}{234}
  26509. +\entry {\code {ashift} and attributes}{307}
  26510. +\entry {\code {ashiftrt}}{234}
  26511. +\entry {\code {ashiftrt} and attributes}{307}
  26512. +\entry {\code {ashl\var {m}3} instruction pattern}{282}
  26513. +\entry {\code {ashr\var {m}3} instruction pattern}{283}
  26514. +\entry {\code {asm} expressions}{143}
  26515. +\entry {\code {ASM{\_}APP{\_}OFF}}{385}
  26516. +\entry {\code {ASM{\_}APP{\_}ON}}{385}
  26517. +\entry {\code {ASM{\_}BYTE{\_}OP}}{387}
  26518. +\entry {\code {ASM{\_}CLOSE{\_}PAREN}}{388}
  26519. +\entry {\code {ASM{\_}COMMENT{\_}START}}{385}
  26520. +\entry {\code {ASM{\_}DECLARE{\_}FUNCTION{\_}NAME}}{390}
  26521. +\entry {\code {ASM{\_}DECLARE{\_}FUNCTION{\_}SIZE}}{390}
  26522. +\entry {\code {ASM{\_}DECLARE{\_}OBJECT{\_}NAME}}{390}
  26523. +\entry {\code {ASM{\_}FILE{\_}END}}{385}
  26524. +\entry {\code {ASM{\_}FILE{\_}START}}{385}
  26525. +\entry {\code {ASM{\_}FINAL{\_}SPEC}}{320}
  26526. +\entry {\code {ASM{\_}FINISH{\_}DECLARE{\_}OBJECT}}{391}
  26527. +\entry {\code {ASM{\_}FORMAT{\_}PRIVATE{\_}NAME}}{392}
  26528. +\entry {\code {asm{\_}fprintf}}{399}
  26529. +\entry {\code {ASM{\_}GENERATE{\_}INTERNAL{\_}LABEL}}{392}
  26530. +\entry {\code {ASM{\_}GLOBALIZE{\_}LABEL}}{391}
  26531. +\entry {\code {ASM{\_}IDENTIFY{\_}GCC}}{385}
  26532. +\entry {\code {asm{\_}input}}{243}
  26533. +\entry {\code {ASM{\_}NO{\_}SKIP{\_}IN{\_}TEXT}}{401}
  26534. +\entry {\code {asm{\_}noperands}}{249}
  26535. +\entry {\code {ASM{\_}OPEN{\_}PAREN}}{388}
  26536. +\entry {\code {asm{\_}operands}, RTL sharing}{255}
  26537. +\entry {\code {asm{\_}operands}, usage}{244}
  26538. +\entry {\code {ASM{\_}OUTPUT{\_}ADDR{\_}DIFF{\_}ELT}}{400}
  26539. +\entry {\code {ASM{\_}OUTPUT{\_}ADDR{\_}VEC{\_}ELT}}{400}
  26540. +\entry {\code {ASM{\_}OUTPUT{\_}ALIGN}}{401}
  26541. +\entry {\code {ASM{\_}OUTPUT{\_}ALIGN{\_}CODE}}{401}
  26542. +\entry {\code {ASM{\_}OUTPUT{\_}ALIGNED{\_}COMMON}}{389}
  26543. +\entry {\code {ASM{\_}OUTPUT{\_}ALIGNED{\_}LOCAL}}{390}
  26544. +\entry {\code {ASM{\_}OUTPUT{\_}ASCII}}{387}
  26545. +\entry {\code {ASM{\_}OUTPUT{\_}BYTE}}{387}
  26546. +\entry {\code {ASM{\_}OUTPUT{\_}CASE{\_}END}}{400}
  26547. +\entry {\code {ASM{\_}OUTPUT{\_}CASE{\_}LABEL}}{400}
  26548. +\entry {\code {ASM{\_}OUTPUT{\_}CHAR}}{387}
  26549. +\entry {\code {ASM{\_}OUTPUT{\_}COMMON}}{389}
  26550. +\entry {\code {ASM{\_}OUTPUT{\_}CONSTRUCTOR}}{396}
  26551. +\entry {\code {ASM{\_}OUTPUT{\_}DEF}}{392}
  26552. +\entry {\code {ASM{\_}OUTPUT{\_}DESTRUCTOR}}{396}
  26553. +\entry {\code {ASM{\_}OUTPUT{\_}DOUBLE}}{386}
  26554. +\entry {\code {ASM{\_}OUTPUT{\_}DOUBLE{\_}INT}}{387}
  26555. +\entry {\code {ASM{\_}OUTPUT{\_}EXTERNAL}}{391}
  26556. +\entry {\code {ASM{\_}OUTPUT{\_}EXTERNAL{\_}LIBCALL}}{391}
  26557. +\entry {\code {ASM{\_}OUTPUT{\_}FLOAT}}{386}
  26558. +\entry {\code {ASM{\_}OUTPUT{\_}IDENT}}{386}
  26559. +\entry {\code {ASM{\_}OUTPUT{\_}INT}}{387}
  26560. +\entry {\code {ASM{\_}OUTPUT{\_}INTERNAL{\_}LABEL}}{391}
  26561. +\entry {\code {ASM{\_}OUTPUT{\_}LABEL}}{390}
  26562. +\entry {\code {ASM{\_}OUTPUT{\_}LABELREF}}{391}
  26563. +\entry {\code {ASM{\_}OUTPUT{\_}LOCAL}}{389}
  26564. +\entry {\code {ASM{\_}OUTPUT{\_}LONG{\_}DOUBLE}}{386}
  26565. +\entry {\code {ASM{\_}OUTPUT{\_}LOOP{\_}ALIGN}}{401}
  26566. +\entry {\code {ASM{\_}OUTPUT{\_}OPCODE}}{397}
  26567. +\entry {\code {ASM{\_}OUTPUT{\_}POOL{\_}PROLOGUE}}{387}
  26568. +\entry {\code {ASM{\_}OUTPUT{\_}QUADRUPLE{\_}INT}}{387}
  26569. +\entry {\code {ASM{\_}OUTPUT{\_}REG{\_}POP}}{399}
  26570. +\entry {\code {ASM{\_}OUTPUT{\_}REG{\_}PUSH}}{399}
  26571. +\entry {\code {ASM{\_}OUTPUT{\_}SECTION{\_}NAME}}{386}
  26572. +\entry {\code {ASM{\_}OUTPUT{\_}SHARED{\_}COMMON}}{389}
  26573. +\entry {\code {ASM{\_}OUTPUT{\_}SHARED{\_}LOCAL}}{390}
  26574. +\entry {\code {ASM{\_}OUTPUT{\_}SHORT}}{387}
  26575. +\entry {\code {ASM{\_}OUTPUT{\_}SKIP}}{401}
  26576. +\entry {\code {ASM{\_}OUTPUT{\_}SOURCE{\_}FILENAME}}{385}
  26577. +\entry {\code {ASM{\_}OUTPUT{\_}SOURCE{\_}LINE}}{386}
  26578. +\entry {\code {ASM{\_}OUTPUT{\_}SPECIAL{\_}POOL{\_}ENTRY}}{387}
  26579. +\entry {\code {ASM{\_}SPEC}}{320}
  26580. +\entry {\code {ASM{\_}STABD{\_}OP}}{403}
  26581. +\entry {\code {ASM{\_}STABN{\_}OP}}{403}
  26582. +\entry {\code {ASM{\_}STABS{\_}OP}}{403}
  26583. +\entry {\code {assemble{\_}name}}{390}
  26584. +\entry {assembler format}{385}
  26585. +\entry {assembler instructions}{143}
  26586. +\entry {assembler instructions in RTL}{244}
  26587. +\entry {assembler names for identifiers}{147}
  26588. +\entry {assembler syntax, 88k}{62}
  26589. +\entry {\code {ASSEMBLER{\_}DIALECT}}{399}
  26590. +\entry {assembly code, invalid}{187}
  26591. +\entry {assigning attribute values to insns}{309}
  26592. +\entry {asterisk in template}{265}
  26593. +\entry {\code {atof}}{408}
  26594. +\entry {\code {attr}}{310}
  26595. +\entry {\code {attr{\_}flag}}{308}
  26596. +\entry {attribute expressions}{306}
  26597. +\entry {attribute of variables}{139}
  26598. +\entry {attribute specifications}{311}
  26599. +\entry {attribute specifications example}{311}
  26600. +\entry {attributes, defining}{305}
  26601. +\entry {autoincrement addressing, availability}{205}
  26602. +\entry {autoincrement/decrement addressing}{267}
  26603. +\entry {autoincrement/decrement analysis}{211}
  26604. +\entry {automatic \code {inline} for C{\tt\char43}{\tt\char43} member fns}{142}
  26605.  \initial {B}
  26606. -\entry {backslash}{270}
  26607. -\entry {backtrace for bug reports}{197}
  26608. -\entry {\code {barrier}}{253}
  26609. -\entry {\code {BASE{\_}REG{\_}CLASS}}{348}
  26610. -\entry {basic blocks}{217}
  26611. -\entry {\code {bcmp}}{427}
  26612. -\entry {\code {b\var {cond}} instruction pattern}{292}
  26613. -\entry {\code {bcopy}, implicit usage}{378}
  26614. -\entry {\code {BIGGEST{\_}ALIGNMENT}}{334}
  26615. -\entry {\code {BIGGEST{\_}FIELD{\_}ALIGNMENT}}{334}
  26616. -\entry {Bison parser generator}{90}
  26617. -\entry {bit fields}{243}
  26618. -\entry {bit shift overflow (88k)}{66}
  26619. -\entry {\code {BITFIELD{\_}NBYTES{\_}LIMITED}}{336}
  26620. -\entry {\code {BITS{\_}BIG{\_}ENDIAN}}{332}
  26621. -\entry {\code {BITS{\_}BIG{\_}ENDIAN}, effect on \code {sign{\_}extract}}{243}
  26622. -\entry {\code {BITS{\_}PER{\_}UNIT}}{332}
  26623. -\entry {\code {BITS{\_}PER{\_}WORD}}{333}
  26624. -\entry {bitwise complement}{240}
  26625. -\entry {bitwise exclusive-or}{240}
  26626. -\entry {bitwise inclusive-or}{240}
  26627. -\entry {bitwise logical-and}{240}
  26628. -\entry {\code {BLKmode}}{229}
  26629. -\entry {\code {BLKmode}, and function return values}{260}
  26630. -\entry {\code {BLOCK{\_}PROFILER}}{371}
  26631. -\entry {\code {BLOCK{\_}PROFILER{\_}CODE}}{371}
  26632. -\entry {\code {BRANCH{\_}COST}}{386}
  26633. -\entry {\code {break{\_}out{\_}memory{\_}refs}}{382}
  26634. -\entry {bug criteria}{193}
  26635. -\entry {bug report mailing lists}{194}
  26636. -\entry {bugs}{193}
  26637. -\entry {bugs, known}{169}
  26638. -\entry {builtin functions}{27}
  26639. -\entry {byte writes (29k)}{62}
  26640. -\entry {\code {byte{\_}mode}}{232}
  26641. -\entry {\code {BYTES{\_}BIG{\_}ENDIAN}}{332}
  26642. -\entry {\code {bzero}}{427}
  26643. -\entry {\code {bzero}, implicit usage}{378}
  26644. +\entry {backslash}{264}
  26645. +\entry {backtrace for bug reports}{191}
  26646. +\entry {\code {barrier}}{247}
  26647. +\entry {\code {BASE{\_}REG{\_}CLASS}}{342}
  26648. +\entry {basic blocks}{211}
  26649. +\entry {\code {bcmp}}{419}
  26650. +\entry {\code {b\var {cond}} instruction pattern}{286}
  26651. +\entry {\code {bcopy}, implicit usage}{372}
  26652. +\entry {\code {BIGGEST{\_}ALIGNMENT}}{328}
  26653. +\entry {\code {BIGGEST{\_}FIELD{\_}ALIGNMENT}}{328}
  26654. +\entry {Bison parser generator}{86}
  26655. +\entry {bit fields}{237}
  26656. +\entry {bit shift overflow (88k)}{63}
  26657. +\entry {\code {BITFIELD{\_}NBYTES{\_}LIMITED}}{330}
  26658. +\entry {\code {BITS{\_}BIG{\_}ENDIAN}}{326}
  26659. +\entry {\code {BITS{\_}BIG{\_}ENDIAN}, effect on \code {sign{\_}extract}}{237}
  26660. +\entry {\code {BITS{\_}PER{\_}UNIT}}{326}
  26661. +\entry {\code {BITS{\_}PER{\_}WORD}}{326}
  26662. +\entry {bitwise complement}{234}
  26663. +\entry {bitwise exclusive-or}{234}
  26664. +\entry {bitwise inclusive-or}{234}
  26665. +\entry {bitwise logical-and}{234}
  26666. +\entry {\code {BLKmode}}{223}
  26667. +\entry {\code {BLKmode}, and function return values}{254}
  26668. +\entry {\code {BLOCK{\_}PROFILER}}{364}
  26669. +\entry {\code {BLOCK{\_}PROFILER{\_}CODE}}{365}
  26670. +\entry {\code {BRANCH{\_}COST}}{380}
  26671. +\entry {\code {break{\_}out{\_}memory{\_}refs}}{375}
  26672. +\entry {bug criteria}{187}
  26673. +\entry {bug report mailing lists}{188}
  26674. +\entry {bugs}{187}
  26675. +\entry {bugs, known}{163}
  26676. +\entry {builtin functions}{25}
  26677. +\entry {byte writes (29k)}{58}
  26678. +\entry {\code {byte{\_}mode}}{226}
  26679. +\entry {\code {BYTES{\_}BIG{\_}ENDIAN}}{326}
  26680. +\entry {\code {bzero}}{419}
  26681. +\entry {\code {bzero}, implicit usage}{372}
  26682.  \initial {C}
  26683. -\entry {C compilation options}{19}
  26684. -\entry {C intermediate output, nonexistent}{17}
  26685. -\entry {C language extensions}{119}
  26686. -\entry {C language, traditional}{28}
  26687. -\entry {C statements for assembler output}{271}
  26688. -\entry {\code {C{\_}INCLUDE{\_}PATH}}{82}
  26689. -\entry {\code {c{\tt\char43}{\tt\char43}}}{26}
  26690. -\entry {C{\tt\char43}{\tt\char43}}{17}
  26691. -\entry {C{\tt\char43}{\tt\char43} compilation options}{19}
  26692. -\entry {C{\tt\char43}{\tt\char43} interface and implementation headers}{162}
  26693. -\entry {C{\tt\char43}{\tt\char43} language extensions}{159}
  26694. -\entry {C{\tt\char43}{\tt\char43} member fns, automatically \code {inline}}{146}
  26695. -\entry {C{\tt\char43}{\tt\char43} misunderstandings}{185}
  26696. -\entry {C{\tt\char43}{\tt\char43} named return value}{159}
  26697. -\entry {C{\tt\char43}{\tt\char43} options, command line}{30}
  26698. -\entry {C{\tt\char43}{\tt\char43} pragmas, effect on inlining}{163}
  26699. -\entry {C{\tt\char43}{\tt\char43} signatures}{166}
  26700. -\entry {C{\tt\char43}{\tt\char43} source file suffixes}{26}
  26701. -\entry {C{\tt\char43}{\tt\char43} static data, declaring and defining}{186}
  26702. -\entry {C{\tt\char43}{\tt\char43} subtype polymorphism}{166}
  26703. -\entry {C{\tt\char43}{\tt\char43} type abstraction}{166}
  26704. -\entry {\code {call}}{246}
  26705. -\entry {\code {call} instruction pattern}{292}
  26706. -\entry {\code {call} usage}{259}
  26707. -\entry {call-clobbered register}{341}
  26708. -\entry {call-saved register}{341}
  26709. -\entry {call-used register}{341}
  26710. -\entry {\code {call{\_}insn}}{253}
  26711. -\entry {\code {call{\_}insn} and \samp {/u}}{226}
  26712. -\entry {\code {CALL{\_}INSN{\_}FUNCTION{\_}USAGE}}{253}
  26713. -\entry {\code {call{\_}pop} instruction pattern}{292}
  26714. -\entry {\code {CALL{\_}USED{\_}REGISTERS}}{341}
  26715. -\entry {\code {call{\_}used{\_}regs}}{341}
  26716. -\entry {\code {call{\_}value} instruction pattern}{292}
  26717. -\entry {\code {call{\_}value{\_}pop} instruction pattern}{292}
  26718. -\entry {\code {CALLER{\_}SAVE{\_}PROFITABLE}}{367}
  26719. -\entry {calling conventions}{353}
  26720. -\entry {calling functions in RTL}{259}
  26721. -\entry {\code {CAN{\_}DEBUG{\_}WITHOUT{\_}FP}}{332}
  26722. -\entry {\code {CAN{\_}ELIMINATE}}{358}
  26723. -\entry {canonicalization of instructions}{300}
  26724. -\entry {\code {CANONICALIZE{\_}COMPARISON}}{384}
  26725. -\entry {case labels in initializers}{135}
  26726. -\entry {case ranges}{137}
  26727. -\entry {case sensitivity and VMS}{209}
  26728. -\entry {\code {CASE{\_}DROPS{\_}THROUGH}}{418}
  26729. -\entry {\code {CASE{\_}VALUES{\_}THRESHOLD}}{418}
  26730. -\entry {\code {CASE{\_}VECTOR{\_}MODE}}{418}
  26731. -\entry {\code {CASE{\_}VECTOR{\_}PC{\_}RELATIVE}}{418}
  26732. -\entry {\code {casesi} instruction pattern}{294}
  26733. -\entry {cast to a union}{137}
  26734. -\entry {casts as lvalues}{127}
  26735. -\entry {\code {cc{\_}status}}{382}
  26736. -\entry {\code {CC{\_}STATUS{\_}MDEP}}{383}
  26737. -\entry {\code {CC{\_}STATUS{\_}MDEP{\_}INIT}}{383}
  26738. -\entry {\code {cc0}}{237}
  26739. -\entry {\code {cc0}, RTL sharing}{261}
  26740. -\entry {\code {cc0{\_}rtx}}{237}
  26741. -\entry {\code {CC1{\_}SPEC}}{326}
  26742. -\entry {\code {CC1PLUS{\_}SPEC}}{326}
  26743. -\entry {\code {CCmode}}{229}
  26744. -\entry {\code {CDImode}}{230}
  26745. -\entry {\code {change{\_}address}}{286}
  26746. -\entry {\code {CHAR{\_}TYPE{\_}SIZE}}{338}
  26747. -\entry {\code {CHECK{\_}FLOAT{\_}VALUE}}{337}
  26748. -\entry {\code {CHImode}}{230}
  26749. -\entry {class definitions, register}{347}
  26750. -\entry {class preference constraints}{278}
  26751. -\entry {\code {CLASS{\_}LIKELY{\_}SPILLED{\_}P}}{352}
  26752. -\entry {\code {CLASS{\_}MAX{\_}NREGS}}{352}
  26753. -\entry {classes of RTX codes}{223}
  26754. -\entry {\code {CLEAR{\_}INSN{\_}CACHE}}{375}
  26755. -\entry {\code {clobber}}{246}
  26756. -\entry {\code {cmp\var {m}} instruction pattern}{289}
  26757. -\entry {\code {cmpstr\var {m}} instruction pattern}{289}
  26758. -\entry {code generation conventions}{78}
  26759. -\entry {code generation RTL sequences}{305}
  26760. -\entry {code motion}{217}
  26761. -\entry {\code {code{\_}label}}{253}
  26762. -\entry {\code {code{\_}label} and \samp {/i}}{227}
  26763. -\entry {\code {CODE{\_}LABEL{\_}NUMBER}}{253}
  26764. -\entry {codes, RTL expression}{221}
  26765. -\entry {\code {COImode}}{230}
  26766. -\entry {combiner pass}{236}
  26767. -\entry {command options}{19}
  26768. -\entry {common subexpression elimination}{217}
  26769. -\entry {\code {COMP{\_}TYPE{\_}ATTRIBUTES}}{422}
  26770. -\entry {\code {compare}}{238}
  26771. -\entry {\code {compare}, canonicalization of}{300}
  26772. -\entry {compilation in a separate directory}{106}
  26773. -\entry {compiler bugs, reporting}{195}
  26774. -\entry {compiler compared to C{\tt\char43}{\tt\char43} preprocessor}{17}
  26775. -\entry {compiler options, C{\tt\char43}{\tt\char43}}{30}
  26776. -\entry {compiler passes and files}{215}
  26777. -\entry {compiler version, specifying}{54}
  26778. -\entry {\code {COMPILER{\_}PATH}}{82}
  26779. -\entry {complement, bitwise}{240}
  26780. -\entry {complex numbers}{129}
  26781. -\entry {compound expressions as lvalues}{127}
  26782. -\entry {computed gotos}{121}
  26783. -\entry {computing the length of an insn}{318}
  26784. -\entry {\code {cond}}{242}
  26785. -\entry {\code {cond} and attributes}{313}
  26786. -\entry {condition code register}{237}
  26787. -\entry {condition code status}{382}
  26788. -\entry {condition codes}{241}
  26789. -\entry {conditional expressions as lvalues}{127}
  26790. -\entry {conditional expressions, extensions}{128}
  26791. -\entry {\code {CONDITIONAL{\_}REGISTER{\_}USAGE}}{341}
  26792. -\entry {conditions, in patterns}{264}
  26793. -\entry {configuration file}{425}
  26794. -\entry {configurations supported by GNU CC}{93}
  26795. -\entry {conflicting types}{184}
  26796. -\entry {\code {const} applied to function}{138}
  26797. -\entry {\code {const} function attribute}{139}
  26798. -\entry {\code {CONST{\_}CALL{\_}P}}{226}
  26799. -\entry {\code {CONST{\_}COSTS}}{385}
  26800. -\entry {\code {const{\_}double}}{232}
  26801. -\entry {\code {const{\_}double}, RTL sharing}{261}
  26802. -\entry {\code {CONST{\_}DOUBLE{\_}CHAIN}}{232}
  26803. -\entry {\code {CONST{\_}DOUBLE{\_}LOW}}{233}
  26804. -\entry {\code {CONST{\_}DOUBLE{\_}MEM}}{232}
  26805. -\entry {\code {CONST{\_}DOUBLE{\_}OK{\_}FOR{\_}LETTER{\_}P}}{353}
  26806. -\entry {\code {const{\_}int}}{232}
  26807. -\entry {\code {const{\_}int} and attribute tests}{313}
  26808. -\entry {\code {const{\_}int} and attributes}{312}
  26809. -\entry {\code {const{\_}int}, RTL sharing}{261}
  26810. -\entry {\code {CONST{\_}OK{\_}FOR{\_}LETTER{\_}P}}{353}
  26811. -\entry {\code {const{\_}string}}{233}
  26812. -\entry {\code {const{\_}string} and attributes}{313}
  26813. -\entry {\code {const{\_}true{\_}rtx}}{232}
  26814. -\entry {\code {const0{\_}rtx}}{232}
  26815. -\entry {\code {CONST0{\_}RTX}}{233}
  26816. -\entry {\code {const1{\_}rtx}}{232}
  26817. -\entry {\code {CONST1{\_}RTX}}{233}
  26818. -\entry {\code {const2{\_}rtx}}{232}
  26819. -\entry {\code {CONST2{\_}RTX}}{233}
  26820. -\entry {constant attributes}{320}
  26821. -\entry {constant folding}{215}
  26822. -\entry {constant folding and floating point}{416}
  26823. -\entry {constant propagation}{217}
  26824. -\entry {\code {CONSTANT{\_}ADDRESS{\_}P}}{380}
  26825. -\entry {\code {CONSTANT{\_}ALIGNMENT}}{334}
  26826. -\entry {\code {CONSTANT{\_}P}}{380}
  26827. -\entry {\code {CONSTANT{\_}POOL{\_}ADDRESS{\_}P}}{226}
  26828. -\entry {constants in constraints}{274}
  26829. -\entry {\code {constm1{\_}rtx}}{232}
  26830. -\entry {constraint modifier characters}{279}
  26831. -\entry {constraint, matching}{274}
  26832. -\entry {constraints}{273}
  26833. -\entry {constraints, machine specific}{280}
  26834. -\entry {constructing calls}{125}
  26835. -\entry {constructor expressions}{134}
  26836. -\entry {constructors vs \code {goto}}{162}
  26837. -\entry {constructors, automatic calls}{117}
  26838. -\entry {constructors, output of}{399}
  26839. +\entry {C compilation options}{17}
  26840. +\entry {C intermediate output, nonexistent}{15}
  26841. +\entry {C language extensions}{115}
  26842. +\entry {C language, traditional}{26}
  26843. +\entry {C statements for assembler output}{265}
  26844. +\entry {\code {C{\_}INCLUDE{\_}PATH}}{78}
  26845. +\entry {\code {c{\tt\char43}{\tt\char43}}}{24}
  26846. +\entry {C{\tt\char43}{\tt\char43}}{15}
  26847. +\entry {C{\tt\char43}{\tt\char43} compilation options}{17}
  26848. +\entry {C{\tt\char43}{\tt\char43} interface and implementation headers}{158}
  26849. +\entry {C{\tt\char43}{\tt\char43} language extensions}{155}
  26850. +\entry {C{\tt\char43}{\tt\char43} member fns, automatically \code {inline}}{142}
  26851. +\entry {C{\tt\char43}{\tt\char43} misunderstandings}{179}
  26852. +\entry {C{\tt\char43}{\tt\char43} named return value}{155}
  26853. +\entry {C{\tt\char43}{\tt\char43} options, command line}{28}
  26854. +\entry {C{\tt\char43}{\tt\char43} pragmas, effect on inlining}{159}
  26855. +\entry {C{\tt\char43}{\tt\char43} signatures}{160}
  26856. +\entry {C{\tt\char43}{\tt\char43} source file suffixes}{24}
  26857. +\entry {C{\tt\char43}{\tt\char43} static data, declaring and defining}{180}
  26858. +\entry {C{\tt\char43}{\tt\char43} subtype polymorphism}{160}
  26859. +\entry {C{\tt\char43}{\tt\char43} type abstraction}{160}
  26860. +\entry {\code {call}}{240}
  26861. +\entry {\code {call} instruction pattern}{286}
  26862. +\entry {\code {call} usage}{253}
  26863. +\entry {call-clobbered register}{335}
  26864. +\entry {call-saved register}{335}
  26865. +\entry {call-used register}{335}
  26866. +\entry {\code {call{\_}insn}}{247}
  26867. +\entry {\code {call{\_}insn} and \samp {/u}}{220}
  26868. +\entry {\code {CALL{\_}INSN{\_}FUNCTION{\_}USAGE}}{247}
  26869. +\entry {\code {call{\_}pop} instruction pattern}{286}
  26870. +\entry {\code {CALL{\_}USED{\_}REGISTERS}}{335}
  26871. +\entry {\code {call{\_}used{\_}regs}}{335}
  26872. +\entry {\code {call{\_}value} instruction pattern}{286}
  26873. +\entry {\code {call{\_}value{\_}pop} instruction pattern}{286}
  26874. +\entry {\code {CALLER{\_}SAVE{\_}PROFITABLE}}{360}
  26875. +\entry {calling conventions}{347}
  26876. +\entry {calling functions in RTL}{253}
  26877. +\entry {\code {CAN{\_}DEBUG{\_}WITHOUT{\_}FP}}{325}
  26878. +\entry {\code {CAN{\_}ELIMINATE}}{351}
  26879. +\entry {canonicalization of instructions}{294}
  26880. +\entry {\code {CANONICALIZE{\_}COMPARISON}}{378}
  26881. +\entry {case labels in initializers}{131}
  26882. +\entry {case ranges}{133}
  26883. +\entry {case sensitivity and VMS}{203}
  26884. +\entry {\code {CASE{\_}DROPS{\_}THROUGH}}{411}
  26885. +\entry {\code {CASE{\_}VALUES{\_}THRESHOLD}}{411}
  26886. +\entry {\code {CASE{\_}VECTOR{\_}MODE}}{411}
  26887. +\entry {\code {CASE{\_}VECTOR{\_}PC{\_}RELATIVE}}{411}
  26888. +\entry {\code {casesi} instruction pattern}{288}
  26889. +\entry {cast to a union}{133}
  26890. +\entry {casts as lvalues}{123}
  26891. +\entry {\code {cc{\_}status}}{376}
  26892. +\entry {\code {CC{\_}STATUS{\_}MDEP}}{376}
  26893. +\entry {\code {CC{\_}STATUS{\_}MDEP{\_}INIT}}{376}
  26894. +\entry {\code {cc0}}{231}
  26895. +\entry {\code {cc0}, RTL sharing}{255}
  26896. +\entry {\code {cc0{\_}rtx}}{231}
  26897. +\entry {\code {CC1{\_}SPEC}}{320}
  26898. +\entry {\code {CC1PLUS{\_}SPEC}}{320}
  26899. +\entry {\code {CCmode}}{223}
  26900. +\entry {\code {CDImode}}{224}
  26901. +\entry {\code {change{\_}address}}{280}
  26902. +\entry {\code {CHAR{\_}TYPE{\_}SIZE}}{332}
  26903. +\entry {\code {CHECK{\_}FLOAT{\_}VALUE}}{330}
  26904. +\entry {\code {CHImode}}{224}
  26905. +\entry {class definitions, register}{340}
  26906. +\entry {class preference constraints}{272}
  26907. +\entry {\code {CLASS{\_}LIKELY{\_}SPILLED{\_}P}}{346}
  26908. +\entry {\code {CLASS{\_}MAX{\_}NREGS}}{346}
  26909. +\entry {classes of RTX codes}{217}
  26910. +\entry {\code {CLEAR{\_}INSN{\_}CACHE}}{369}
  26911. +\entry {\code {clobber}}{240}
  26912. +\entry {\code {cmp\var {m}} instruction pattern}{283}
  26913. +\entry {\code {cmpstr\var {m}} instruction pattern}{283}
  26914. +\entry {code generation conventions}{74}
  26915. +\entry {code generation RTL sequences}{299}
  26916. +\entry {code motion}{211}
  26917. +\entry {\code {code{\_}label}}{247}
  26918. +\entry {\code {code{\_}label} and \samp {/i}}{221}
  26919. +\entry {\code {CODE{\_}LABEL{\_}NUMBER}}{247}
  26920. +\entry {codes, RTL expression}{215}
  26921. +\entry {\code {COImode}}{224}
  26922. +\entry {combiner pass}{230}
  26923. +\entry {command options}{17}
  26924. +\entry {common subexpression elimination}{211}
  26925. +\entry {\code {COMP{\_}TYPE{\_}ATTRIBUTES}}{415}
  26926. +\entry {\code {compare}}{232}
  26927. +\entry {\code {compare}, canonicalization of}{294}
  26928. +\entry {compilation in a separate directory}{101}
  26929. +\entry {compiler bugs, reporting}{189}
  26930. +\entry {compiler compared to C{\tt\char43}{\tt\char43} preprocessor}{15}
  26931. +\entry {compiler options, C{\tt\char43}{\tt\char43}}{28}
  26932. +\entry {compiler passes and files}{209}
  26933. +\entry {compiler version, specifying}{51}
  26934. +\entry {\code {COMPILER{\_}PATH}}{78}
  26935. +\entry {complement, bitwise}{234}
  26936. +\entry {complex numbers}{125}
  26937. +\entry {compound expressions as lvalues}{123}
  26938. +\entry {computed gotos}{117}
  26939. +\entry {computing the length of an insn}{312}
  26940. +\entry {\code {cond}}{236}
  26941. +\entry {\code {cond} and attributes}{307}
  26942. +\entry {condition code register}{231}
  26943. +\entry {condition code status}{376}
  26944. +\entry {condition codes}{235}
  26945. +\entry {conditional expressions as lvalues}{123}
  26946. +\entry {conditional expressions, extensions}{124}
  26947. +\entry {\code {CONDITIONAL{\_}REGISTER{\_}USAGE}}{335}
  26948. +\entry {conditions, in patterns}{258}
  26949. +\entry {configuration file}{417}
  26950. +\entry {configurations supported by GNU CC}{89}
  26951. +\entry {conflicting types}{178}
  26952. +\entry {\code {const} applied to function}{134}
  26953. +\entry {\code {const} function attribute}{135}
  26954. +\entry {\code {CONST{\_}CALL{\_}P}}{220}
  26955. +\entry {\code {CONST{\_}COSTS}}{378}
  26956. +\entry {\code {const{\_}double}}{226}
  26957. +\entry {\code {const{\_}double}, RTL sharing}{255}
  26958. +\entry {\code {CONST{\_}DOUBLE{\_}CHAIN}}{226}
  26959. +\entry {\code {CONST{\_}DOUBLE{\_}LOW}}{227}
  26960. +\entry {\code {CONST{\_}DOUBLE{\_}MEM}}{226}
  26961. +\entry {\code {CONST{\_}DOUBLE{\_}OK{\_}FOR{\_}LETTER{\_}P}}{346}
  26962. +\entry {\code {const{\_}int}}{226}
  26963. +\entry {\code {const{\_}int} and attribute tests}{307}
  26964. +\entry {\code {const{\_}int} and attributes}{306}
  26965. +\entry {\code {const{\_}int}, RTL sharing}{255}
  26966. +\entry {\code {CONST{\_}OK{\_}FOR{\_}LETTER{\_}P}}{346}
  26967. +\entry {\code {const{\_}string}}{227}
  26968. +\entry {\code {const{\_}string} and attributes}{307}
  26969. +\entry {\code {const{\_}true{\_}rtx}}{226}
  26970. +\entry {\code {const0{\_}rtx}}{226}
  26971. +\entry {\code {CONST0{\_}RTX}}{227}
  26972. +\entry {\code {const1{\_}rtx}}{226}
  26973. +\entry {\code {CONST1{\_}RTX}}{227}
  26974. +\entry {\code {const2{\_}rtx}}{226}
  26975. +\entry {\code {CONST2{\_}RTX}}{227}
  26976. +\entry {constant attributes}{314}
  26977. +\entry {constant folding}{209}
  26978. +\entry {constant folding and floating point}{409}
  26979. +\entry {constant propagation}{211}
  26980. +\entry {\code {CONSTANT{\_}ADDRESS{\_}P}}{373}
  26981. +\entry {\code {CONSTANT{\_}ALIGNMENT}}{328}
  26982. +\entry {\code {CONSTANT{\_}P}}{374}
  26983. +\entry {\code {CONSTANT{\_}POOL{\_}ADDRESS{\_}P}}{220}
  26984. +\entry {constants in constraints}{268}
  26985. +\entry {\code {constm1{\_}rtx}}{226}
  26986. +\entry {constraint modifier characters}{273}
  26987. +\entry {constraint, matching}{268}
  26988. +\entry {constraints}{267}
  26989. +\entry {constraints, machine specific}{274}
  26990. +\entry {constructing calls}{121}
  26991. +\entry {constructor expressions}{130}
  26992. +\entry {constructors vs \code {goto}}{158}
  26993. +\entry {constructors, automatic calls}{112}
  26994. +\entry {constructors, output of}{393}
  26995.  \entry {contributors}{9}
  26996. -\entry {controlling register usage}{341}
  26997. -\entry {controlling the compilation driver}{325}
  26998. -\entry {conventions, run-time}{213}
  26999. -\entry {conversions}{243}
  27000. -\entry {Convex options}{60}
  27001. -\entry {\code {copy{\_}rtx{\_}if{\_}shared}}{261}
  27002. -\entry {core dump}{193}
  27003. -\entry {\code {cos}}{27}
  27004. -\entry {costs of instructions}{385}
  27005. -\entry {\code {COSTS{\_}N{\_}INSNS}}{385}
  27006. -\entry {\code {CPLUS{\_}INCLUDE{\_}PATH}}{82}
  27007. -\entry {\code {CPP{\_}PREDEFINES}}{329}
  27008. -\entry {\code {CPP{\_}SPEC}}{325}
  27009. -\entry {\code {CQImode}}{230}
  27010. -\entry {cross compilation and floating point}{415}
  27011. -\entry {cross compiling}{54}
  27012. -\entry {cross-compiler, installation}{106}
  27013. -\entry {cross-jumping}{219}
  27014. -\entry {\code {CSImode}}{230}
  27015. -\entry {\code {CTImode}}{230}
  27016. -\entry {\code {CUMULATIVE{\_}ARGS}}{362}
  27017. -\entry {\code {current{\_}function{\_}epilogue{\_}delay{\_}list}}{370}
  27018. -\entry {\code {current{\_}function{\_}outgoing{\_}args{\_}size}}{359}
  27019. -\entry {\code {current{\_}function{\_}pops{\_}args}}{369}
  27020. -\entry {\code {current{\_}function{\_}pretend{\_}args{\_}size}}{368}
  27021. +\entry {controlling register usage}{335}
  27022. +\entry {controlling the compilation driver}{319}
  27023. +\entry {conventions, run-time}{207}
  27024. +\entry {conversions}{237}
  27025. +\entry {Convex options}{57}
  27026. +\entry {\code {copy{\_}rtx{\_}if{\_}shared}}{255}
  27027. +\entry {core dump}{187}
  27028. +\entry {\code {cos}}{25}
  27029. +\entry {costs of instructions}{378}
  27030. +\entry {\code {COSTS{\_}N{\_}INSNS}}{379}
  27031. +\entry {\code {CPLUS{\_}INCLUDE{\_}PATH}}{78}
  27032. +\entry {\code {CPP{\_}PREDEFINES}}{323}
  27033. +\entry {\code {CPP{\_}SPEC}}{319}
  27034. +\entry {\code {CQImode}}{224}
  27035. +\entry {cross compilation and floating point}{408}
  27036. +\entry {cross compiling}{51}
  27037. +\entry {cross-compiler, installation}{102}
  27038. +\entry {cross-jumping}{213}
  27039. +\entry {\code {CSImode}}{224}
  27040. +\entry {\code {CTImode}}{224}
  27041. +\entry {\code {CUMULATIVE{\_}ARGS}}{356}
  27042. +\entry {\code {current{\_}function{\_}epilogue{\_}delay{\_}list}}{363}
  27043. +\entry {\code {current{\_}function{\_}outgoing{\_}args{\_}size}}{352}
  27044. +\entry {\code {current{\_}function{\_}pops{\_}args}}{363}
  27045. +\entry {\code {current{\_}function{\_}pretend{\_}args{\_}size}}{362}
  27046.  \initial {D}
  27047. -\entry {\samp {d} in constraint}{273}
  27048. -\entry {data flow analysis}{217}
  27049. -\entry {\code {DATA{\_}ALIGNMENT}}{334}
  27050. -\entry {\code {data{\_}section}}{388}
  27051. -\entry {\code {DATA{\_}SECTION{\_}ASM{\_}OP}}{388}
  27052. -\entry {\code {DBR{\_}OUTPUT{\_}SEQEND}}{405}
  27053. -\entry {\code {dbr{\_}sequence{\_}length}}{405}
  27054. -\entry {DBX}{175}
  27055. -\entry {\code {DBX{\_}BLOCKS{\_}FUNCTION{\_}RELATIVE}}{411}
  27056. -\entry {\code {DBX{\_}CONTIN{\_}CHAR}}{410}
  27057. -\entry {\code {DBX{\_}CONTIN{\_}LENGTH}}{410}
  27058. -\entry {\code {DBX{\_}DEBUGGING{\_}INFO}}{409}
  27059. -\entry {\code {DBX{\_}FUNCTION{\_}FIRST}}{411}
  27060. -\entry {\code {DBX{\_}LBRAC{\_}FIRST}}{411}
  27061. -\entry {\code {DBX{\_}MEMPARM{\_}STABS{\_}LETTER}}{411}
  27062. -\entry {\code {DBX{\_}NO{\_}XREFS}}{410}
  27063. -\entry {\code {DBX{\_}OUTPUT{\_}ENUM}}{412}
  27064. -\entry {\code {DBX{\_}OUTPUT{\_}FUNCTION{\_}END}}{412}
  27065. -\entry {\code {DBX{\_}OUTPUT{\_}LBRAC}}{411}
  27066. -\entry {\code {DBX{\_}OUTPUT{\_}MAIN{\_}SOURCE{\_}DIRECTORY}}{413}
  27067. -\entry {\code {DBX{\_}OUTPUT{\_}MAIN{\_}SOURCE{\_}FILE{\_}END}}{413}
  27068. -\entry {\code {DBX{\_}OUTPUT{\_}MAIN{\_}SOURCE{\_}FILENAME}}{413}
  27069. -\entry {\code {DBX{\_}OUTPUT{\_}RBRAC}}{411}
  27070. -\entry {\code {DBX{\_}OUTPUT{\_}SOURCE{\_}FILENAME}}{413}
  27071. -\entry {\code {DBX{\_}OUTPUT{\_}STANDARD{\_}TYPES}}{412}
  27072. -\entry {\code {DBX{\_}REGISTER{\_}NUMBER}}{408}
  27073. -\entry {\code {DBX{\_}REGPARM{\_}STABS{\_}CODE}}{411}
  27074. -\entry {\code {DBX{\_}REGPARM{\_}STABS{\_}LETTER}}{411}
  27075. -\entry {\code {DBX{\_}STATIC{\_}CONST{\_}VAR{\_}CODE}}{410}
  27076. -\entry {\code {DBX{\_}STATIC{\_}STAB{\_}DATA{\_}SECTION}}{410}
  27077. -\entry {\code {DBX{\_}TYPE{\_}DECL{\_}STABS{\_}CODE}}{410}
  27078. -\entry {\code {DBX{\_}WORKING{\_}DIRECTORY}}{413}
  27079. -\entry {\code {DCmode}}{229}
  27080. -\entry {De Morgan's law}{300}
  27081. -\entry {dead code}{216}
  27082. -\entry {\code {dead{\_}or{\_}set{\_}p}}{303}
  27083. -\entry {deallocating variable length arrays}{131}
  27084. -\entry {death notes}{346}
  27085. -\entry {\code {debug{\_}rtx}}{198}
  27086. -\entry {\code {DEBUG{\_}SYMS{\_}TEXT}}{409}
  27087. -\entry {\code {DEBUGGER{\_}ARG{\_}OFFSET}}{409}
  27088. -\entry {\code {DEBUGGER{\_}AUTO{\_}OFFSET}}{409}
  27089. -\entry {debugging information generation}{219}
  27090. -\entry {debugging information options}{41}
  27091. -\entry {debugging, 88k OCS}{64}
  27092. -\entry {declaration scope}{181}
  27093. -\entry {declarations inside expressions}{119}
  27094. -\entry {declarations, RTL}{244}
  27095. -\entry {declaring attributes of functions}{138}
  27096. -\entry {declaring static data in C{\tt\char43}{\tt\char43}}{186}
  27097. -\entry {default implementation, signature member function}{167}
  27098. -\entry {\code {DEFAULT{\_}CALLER{\_}SAVES}}{367}
  27099. -\entry {\code {DEFAULT{\_}GDB{\_}EXTENSIONS}}{409}
  27100. -\entry {\code {DEFAULT{\_}MAIN{\_}RETURN}}{422}
  27101. -\entry {\code {DEFAULT{\_}PCC{\_}STRUCT{\_}RETURN}}{365}
  27102. -\entry {\code {DEFAULT{\_}SHORT{\_}ENUMS}}{339}
  27103. -\entry {\code {DEFAULT{\_}SIGNED{\_}CHAR}}{338}
  27104. -\entry {\code {define{\_}asm{\_}attributes}}{317}
  27105. -\entry {\code {define{\_}attr}}{311}
  27106. -\entry {\code {define{\_}delay}}{321}
  27107. -\entry {\code {define{\_}expand}}{305}
  27108. -\entry {\code {define{\_}function{\_}unit}}{322}
  27109. -\entry {\code {define{\_}insn}}{263}
  27110. -\entry {\code {define{\_}insn} example}{264}
  27111. -\entry {\code {define{\_}peephole}}{305}
  27112. -\entry {define{\_}split}{308}
  27113. -\entry {defining attributes and their values}{311}
  27114. -\entry {defining jump instruction patterns}{298}
  27115. -\entry {defining peephole optimizers}{301}
  27116. -\entry {defining RTL sequences for code generation}{305}
  27117. -\entry {defining static data in C{\tt\char43}{\tt\char43}}{186}
  27118. -\entry {delay slots, defining}{320}
  27119. -\entry {\code {DELAY{\_}SLOTS{\_}FOR{\_}EPILOGUE}}{369}
  27120. -\entry {delayed branch scheduling}{219}
  27121. -\entry {dependencies for make as output}{82}
  27122. -\entry {dependencies, make}{50}
  27123. -\entry {\code {DEPENDENCIES{\_}OUTPUT}}{82}
  27124. -\entry {Dependent Patterns}{296}
  27125. -\entry {destructors vs \code {goto}}{162}
  27126. -\entry {destructors, output of}{399}
  27127. -\entry {detecting \w {\samp {-traditional}}}{29}
  27128. -\entry {\code {DFmode}}{229}
  27129. -\entry {dialect options}{27}
  27130. -\entry {digits in constraint}{274}
  27131. -\entry {\code {DImode}}{229}
  27132. -\entry {\code {DIR{\_}SEPARATOR}}{427}
  27133. -\entry {directory options}{53}
  27134. -\entry {disabling certain registers}{341}
  27135. -\entry {dispatch table}{406}
  27136. -\entry {\code {div}}{239}
  27137. -\entry {\code {div} and attributes}{313}
  27138. -\entry {\code {DIVDI3{\_}LIBCALL}}{377}
  27139. -\entry {divide instruction, 88k}{66}
  27140. -\entry {division}{239}
  27141. -\entry {\code {div\var {m}3} instruction pattern}{288}
  27142. -\entry {\code {divmod\var {m}4} instruction pattern}{288}
  27143. -\entry {\code {DIVSI3{\_}LIBCALL}}{376}
  27144. -\entry {dollar signs in identifier names}{142}
  27145. -\entry {\code {DOLLARS{\_}IN{\_}IDENTIFIERS}}{422}
  27146. -\entry {\code {DONE}}{306}
  27147. -\entry {\code {DONT{\_}DECLARE{\_}SYS{\_}SIGLIST}}{427}
  27148. -\entry {\code {DONT{\_}REDUCE{\_}ADDR}}{387}
  27149. -\entry {double-word arithmetic}{129}
  27150. -\entry {\code {DOUBLE{\_}TYPE{\_}SIZE}}{338}
  27151. -\entry {downward funargs}{122}
  27152. -\entry {driver}{325}
  27153. -\entry {DW bit (29k)}{62}
  27154. -\entry {\code {DWARF{\_}DEBUGGING{\_}INFO}}{414}
  27155. -\entry {\code {DYNAMIC{\_}CHAIN{\_}ADDRESS}}{354}
  27156. +\entry {\samp {d} in constraint}{267}
  27157. +\entry {data flow analysis}{211}
  27158. +\entry {\code {DATA{\_}ALIGNMENT}}{328}
  27159. +\entry {\code {data{\_}section}}{382}
  27160. +\entry {\code {DATA{\_}SECTION{\_}ASM{\_}OP}}{382}
  27161. +\entry {\code {DBR{\_}OUTPUT{\_}SEQEND}}{398}
  27162. +\entry {\code {dbr{\_}sequence{\_}length}}{398}
  27163. +\entry {DBX}{169}
  27164. +\entry {\code {DBX{\_}CONTIN{\_}CHAR}}{403}
  27165. +\entry {\code {DBX{\_}CONTIN{\_}LENGTH}}{403}
  27166. +\entry {\code {DBX{\_}DEBUGGING{\_}INFO}}{403}
  27167. +\entry {\code {DBX{\_}FUNCTION{\_}FIRST}}{404}
  27168. +\entry {\code {DBX{\_}LBRAC{\_}FIRST}}{404}
  27169. +\entry {\code {DBX{\_}MEMPARM{\_}STABS{\_}LETTER}}{404}
  27170. +\entry {\code {DBX{\_}NO{\_}XREFS}}{403}
  27171. +\entry {\code {DBX{\_}OUTPUT{\_}ENUM}}{405}
  27172. +\entry {\code {DBX{\_}OUTPUT{\_}FUNCTION{\_}END}}{405}
  27173. +\entry {\code {DBX{\_}OUTPUT{\_}LBRAC}}{405}
  27174. +\entry {\code {DBX{\_}OUTPUT{\_}MAIN{\_}SOURCE{\_}DIRECTORY}}{406}
  27175. +\entry {\code {DBX{\_}OUTPUT{\_}MAIN{\_}SOURCE{\_}FILE{\_}END}}{406}
  27176. +\entry {\code {DBX{\_}OUTPUT{\_}MAIN{\_}SOURCE{\_}FILENAME}}{406}
  27177. +\entry {\code {DBX{\_}OUTPUT{\_}RBRAC}}{405}
  27178. +\entry {\code {DBX{\_}OUTPUT{\_}SOURCE{\_}FILENAME}}{406}
  27179. +\entry {\code {DBX{\_}OUTPUT{\_}STANDARD{\_}TYPES}}{405}
  27180. +\entry {\code {DBX{\_}REGISTER{\_}NUMBER}}{402}
  27181. +\entry {\code {DBX{\_}REGPARM{\_}STABS{\_}CODE}}{404}
  27182. +\entry {\code {DBX{\_}REGPARM{\_}STABS{\_}LETTER}}{404}
  27183. +\entry {\code {DBX{\_}STATIC{\_}CONST{\_}VAR{\_}CODE}}{404}
  27184. +\entry {\code {DBX{\_}STATIC{\_}STAB{\_}DATA{\_}SECTION}}{404}
  27185. +\entry {\code {DBX{\_}TYPE{\_}DECL{\_}STABS{\_}CODE}}{404}
  27186. +\entry {\code {DBX{\_}WORKING{\_}DIRECTORY}}{406}
  27187. +\entry {\code {DCmode}}{223}
  27188. +\entry {De Morgan's law}{294}
  27189. +\entry {dead code}{210}
  27190. +\entry {\code {dead{\_}or{\_}set{\_}p}}{297}
  27191. +\entry {deallocating variable length arrays}{127}
  27192. +\entry {death notes}{340}
  27193. +\entry {\code {debug{\_}rtx}}{192}
  27194. +\entry {\code {DEBUG{\_}SYMS{\_}TEXT}}{403}
  27195. +\entry {\code {DEBUGGER{\_}ARG{\_}OFFSET}}{402}
  27196. +\entry {\code {DEBUGGER{\_}AUTO{\_}OFFSET}}{402}
  27197. +\entry {debugging information generation}{213}
  27198. +\entry {debugging information options}{37}
  27199. +\entry {debugging, 88k OCS}{61}
  27200. +\entry {declaration scope}{175}
  27201. +\entry {declarations inside expressions}{115}
  27202. +\entry {declarations, RTL}{238}
  27203. +\entry {declaring attributes of functions}{134}
  27204. +\entry {declaring static data in C{\tt\char43}{\tt\char43}}{180}
  27205. +\entry {default implementation, signature member function}{161}
  27206. +\entry {\code {DEFAULT{\_}CALLER{\_}SAVES}}{360}
  27207. +\entry {\code {DEFAULT{\_}GDB{\_}EXTENSIONS}}{403}
  27208. +\entry {\code {DEFAULT{\_}MAIN{\_}RETURN}}{415}
  27209. +\entry {\code {DEFAULT{\_}PCC{\_}STRUCT{\_}RETURN}}{359}
  27210. +\entry {\code {DEFAULT{\_}SHORT{\_}ENUMS}}{333}
  27211. +\entry {\code {DEFAULT{\_}SIGNED{\_}CHAR}}{332}
  27212. +\entry {\code {define{\_}asm{\_}attributes}}{311}
  27213. +\entry {\code {define{\_}attr}}{305}
  27214. +\entry {\code {define{\_}delay}}{315}
  27215. +\entry {\code {define{\_}expand}}{299}
  27216. +\entry {\code {define{\_}function{\_}unit}}{316}
  27217. +\entry {\code {define{\_}insn}}{257}
  27218. +\entry {\code {define{\_}insn} example}{258}
  27219. +\entry {\code {define{\_}peephole}}{299}
  27220. +\entry {define{\_}split}{302}
  27221. +\entry {defining attributes and their values}{305}
  27222. +\entry {defining jump instruction patterns}{292}
  27223. +\entry {defining peephole optimizers}{295}
  27224. +\entry {defining RTL sequences for code generation}{299}
  27225. +\entry {defining static data in C{\tt\char43}{\tt\char43}}{180}
  27226. +\entry {delay slots, defining}{314}
  27227. +\entry {\code {DELAY{\_}SLOTS{\_}FOR{\_}EPILOGUE}}{363}
  27228. +\entry {delayed branch scheduling}{213}
  27229. +\entry {dependencies for make as output}{78}
  27230. +\entry {dependencies, make}{47}
  27231. +\entry {\code {DEPENDENCIES{\_}OUTPUT}}{78}
  27232. +\entry {Dependent Patterns}{290}
  27233. +\entry {destructors vs \code {goto}}{158}
  27234. +\entry {destructors, output of}{393}
  27235. +\entry {detecting \w {\samp {-traditional}}}{27}
  27236. +\entry {\code {DFmode}}{223}
  27237. +\entry {dialect options}{25}
  27238. +\entry {digits in constraint}{268}
  27239. +\entry {\code {DImode}}{223}
  27240. +\entry {directory options}{50}
  27241. +\entry {disabling certain registers}{335}
  27242. +\entry {dispatch table}{400}
  27243. +\entry {\code {div}}{233}
  27244. +\entry {\code {div} and attributes}{307}
  27245. +\entry {\code {DIVDI3{\_}LIBCALL}}{371}
  27246. +\entry {divide instruction, 88k}{62}
  27247. +\entry {division}{233}
  27248. +\entry {\code {div\var {m}3} instruction pattern}{282}
  27249. +\entry {\code {divmod\var {m}4} instruction pattern}{282}
  27250. +\entry {\code {DIVSI3{\_}LIBCALL}}{370}
  27251. +\entry {dollar signs in identifier names}{138}
  27252. +\entry {\code {DOLLARS{\_}IN{\_}IDENTIFIERS}}{415}
  27253. +\entry {\code {DONE}}{300}
  27254. +\entry {\code {DONT{\_}DECLARE{\_}SYS{\_}SIGLIST}}{419}
  27255. +\entry {\code {DONT{\_}REDUCE{\_}ADDR}}{381}
  27256. +\entry {double-word arithmetic}{125}
  27257. +\entry {\code {DOUBLE{\_}TYPE{\_}SIZE}}{332}
  27258. +\entry {downward funargs}{118}
  27259. +\entry {driver}{319}
  27260. +\entry {DW bit (29k)}{58}
  27261. +\entry {\code {DWARF{\_}DEBUGGING{\_}INFO}}{407}
  27262. +\entry {\code {DYNAMIC{\_}CHAIN{\_}ADDRESS}}{348}
  27263.  \initial {E}
  27264. -\entry {\samp {E} in constraint}{274}
  27265. -\entry {\code {EASY{\_}DIV{\_}EXPR}}{419}
  27266. -\entry {\code {EDOM}, implicit usage}{377}
  27267. -\entry {\code {ELIGIBLE{\_}FOR{\_}EPILOGUE{\_}DELAY}}{369}
  27268. -\entry {\code {ELIMINABLE{\_}REGS}}{357}
  27269. -\entry {empty constraints}{285}
  27270. -\entry {\code {EMPTY{\_}FIELD{\_}BOUNDARY}}{335}
  27271. -\entry {\code {ENCODE{\_}SECTION{\_}INFO}}{389}
  27272. -\entry {\code {ENCODE{\_}SECTION{\_}INFO} and address validation}{381}
  27273. -\entry {\code {ENCODE{\_}SECTION{\_}INFO} usage}{405}
  27274. -\entry {\code {ENDFILE{\_}SPEC}}{327}
  27275. -\entry {endianness}{211}
  27276. -\entry {\code {enum machine{\_}mode}}{228}
  27277. -\entry {\code {enum reg{\_}class}}{348}
  27278. -\entry {enumeration clash warnings}{38}
  27279. -\entry {environment variables}{81}
  27280. -\entry {epilogue}{367}
  27281. -\entry {\code {eq}}{242}
  27282. -\entry {\code {eq} and attributes}{313}
  27283. -\entry {\code {eq{\_}attr}}{314}
  27284. -\entry {equal}{242}
  27285. -\entry {\code {errno}, implicit usage}{378}
  27286. -\entry {error messages}{191}
  27287. -\entry {escape sequences, traditional}{28}
  27288. -\entry {exclamation point}{278}
  27289. -\entry {exclusive-or, bitwise}{240}
  27290. -\entry {\code {EXECUTABLE{\_}SUFFIX}}{426}
  27291. -\entry {\code {exit}}{27}
  27292. -\entry {exit status and VMS}{209}
  27293. -\entry {\code {EXIT{\_}BODY}}{423}
  27294. -\entry {\code {EXIT{\_}IGNORE{\_}STACK}}{368}
  27295. -\entry {\code {EXPAND{\_}BUILTIN{\_}SAVEREGS}}{373}
  27296. -\entry {expander definitions}{305}
  27297. -\entry {explicit register variables}{152}
  27298. -\entry {\code {expr{\_}list}}{259}
  27299. -\entry {expression codes}{221}
  27300. -\entry {expressions containing statements}{119}
  27301. -\entry {expressions, compound, as lvalues}{127}
  27302. -\entry {expressions, conditional, as lvalues}{127}
  27303. -\entry {expressions, constructor}{134}
  27304. -\entry {extended \code {asm}}{147}
  27305. -\entry {\code {extend\var {mn}} instruction pattern}{290}
  27306. -\entry {extensible constraints}{275}
  27307. -\entry {extensions, \code {?:}}{127, 128}
  27308. -\entry {extensions, C language}{119}
  27309. -\entry {extensions, C{\tt\char43}{\tt\char43} language}{159}
  27310. -\entry {\code {extern int target{\_}flags}}{330}
  27311. -\entry {external declaration scope}{181}
  27312. -\entry {\code {EXTRA{\_}CC{\_}MODES}}{383}
  27313. -\entry {\code {EXTRA{\_}CC{\_}NAMES}}{384}
  27314. -\entry {\code {EXTRA{\_}CONSTRAINT}}{353}
  27315. -\entry {\code {EXTRA{\_}SECTION{\_}FUNCTIONS}}{388}
  27316. -\entry {\code {EXTRA{\_}SECTIONS}}{388}
  27317. -\entry {\code {extv} instruction pattern}{291}
  27318. -\entry {\code {extzv} instruction pattern}{291}
  27319. +\entry {\samp {E} in constraint}{268}
  27320. +\entry {\code {EASY{\_}DIV{\_}EXPR}}{411}
  27321. +\entry {\code {EDOM}, implicit usage}{371}
  27322. +\entry {\code {ELIGIBLE{\_}FOR{\_}EPILOGUE{\_}DELAY}}{363}
  27323. +\entry {\code {ELIMINABLE{\_}REGS}}{351}
  27324. +\entry {empty constraints}{279}
  27325. +\entry {\code {EMPTY{\_}FIELD{\_}BOUNDARY}}{328}
  27326. +\entry {\code {ENCODE{\_}SECTION{\_}INFO}}{383}
  27327. +\entry {\code {ENCODE{\_}SECTION{\_}INFO} and address validation}{374}
  27328. +\entry {\code {ENCODE{\_}SECTION{\_}INFO} usage}{398}
  27329. +\entry {\code {ENDFILE{\_}SPEC}}{321}
  27330. +\entry {endianness}{205}
  27331. +\entry {\code {enum machine{\_}mode}}{222}
  27332. +\entry {\code {enum reg{\_}class}}{342}
  27333. +\entry {enumeration clash warnings}{35}
  27334. +\entry {environment variables}{77}
  27335. +\entry {epilogue}{361}
  27336. +\entry {\code {eq}}{236}
  27337. +\entry {\code {eq} and attributes}{307}
  27338. +\entry {\code {eq{\_}attr}}{308}
  27339. +\entry {equal}{236}
  27340. +\entry {\code {errno}, implicit usage}{371}
  27341. +\entry {error messages}{186}
  27342. +\entry {escape sequences, traditional}{26}
  27343. +\entry {exclamation point}{272}
  27344. +\entry {exclusive-or, bitwise}{234}
  27345. +\entry {\code {EXECUTABLE{\_}SUFFIX}}{418}
  27346. +\entry {\code {exit}}{25}
  27347. +\entry {exit status and VMS}{203}
  27348. +\entry {\code {EXIT{\_}BODY}}{416}
  27349. +\entry {\code {EXIT{\_}IGNORE{\_}STACK}}{362}
  27350. +\entry {\code {EXPAND{\_}BUILTIN{\_}SAVEREGS}}{366}
  27351. +\entry {expander definitions}{299}
  27352. +\entry {explicit register variables}{148}
  27353. +\entry {\code {expr{\_}list}}{253}
  27354. +\entry {expression codes}{215}
  27355. +\entry {expressions containing statements}{115}
  27356. +\entry {expressions, compound, as lvalues}{123}
  27357. +\entry {expressions, conditional, as lvalues}{123}
  27358. +\entry {expressions, constructor}{130}
  27359. +\entry {extended \code {asm}}{143}
  27360. +\entry {\code {extend\var {mn}} instruction pattern}{284}
  27361. +\entry {extensible constraints}{269}
  27362. +\entry {extensions, \code {?:}}{123, 124}
  27363. +\entry {extensions, C language}{115}
  27364. +\entry {extensions, C{\tt\char43}{\tt\char43} language}{155}
  27365. +\entry {\code {extern int target{\_}flags}}{324}
  27366. +\entry {external declaration scope}{175}
  27367. +\entry {\code {EXTRA{\_}CC{\_}MODES}}{377}
  27368. +\entry {\code {EXTRA{\_}CC{\_}NAMES}}{377}
  27369. +\entry {\code {EXTRA{\_}CONSTRAINT}}{347}
  27370. +\entry {\code {EXTRA{\_}SECTION{\_}FUNCTIONS}}{382}
  27371. +\entry {\code {EXTRA{\_}SECTIONS}}{382}
  27372. +\entry {\code {extv} instruction pattern}{285}
  27373. +\entry {\code {extzv} instruction pattern}{285}
  27374.  \initial {F}
  27375. -\entry {\samp {F} in constraint}{274}
  27376. -\entry {\code {fabs}}{27}
  27377. -\entry {\code {FAIL}}{306}
  27378. -\entry {\code {FAILURE{\_}EXIT{\_}CODE}}{425}
  27379. -\entry {fatal signal}{193}
  27380. -\entry {features, optional, in system conventions}{330}
  27381. -\entry {\code {ffs}}{27, 241}
  27382. -\entry {\code {ffs\var {m}2} instruction pattern}{289}
  27383. -\entry {file name suffix}{24}
  27384. -\entry {file names}{51}
  27385. -\entry {files and passes of the compiler}{215}
  27386. -\entry {final pass}{219}
  27387. -\entry {\code {FINAL{\_}PRESCAN{\_}INSN}}{404}
  27388. -\entry {\code {FINAL{\_}REG{\_}PARM{\_}STACK{\_}SPACE}}{359}
  27389. -\entry {\code {final{\_}scan{\_}insn}}{370}
  27390. -\entry {\code {final{\_}sequence}}{405}
  27391. -\entry {\code {FINALIZE{\_}PIC}}{390}
  27392. -\entry {\code {FIRST{\_}INSN{\_}ADDRESS}}{319}
  27393. -\entry {\code {FIRST{\_}PARM{\_}OFFSET}}{354}
  27394. -\entry {\code {FIRST{\_}PARM{\_}OFFSET} and virtual registers}{235}
  27395. -\entry {\code {FIRST{\_}PSEUDO{\_}REGISTER}}{340}
  27396. -\entry {\code {FIRST{\_}STACK{\_}REG}}{345}
  27397. -\entry {\code {FIRST{\_}VIRTUAL{\_}REGISTER}}{235}
  27398. -\entry {\code {fix}}{244}
  27399. -\entry {\code {fix{\_}trunc\var {mn}2} instruction pattern}{290}
  27400. -\entry {fixed register}{341}
  27401. -\entry {\code {FIXED{\_}REGISTERS}}{341}
  27402. -\entry {\code {fixed{\_}regs}}{341}
  27403. -\entry {\code {fix\var {mn}2} instruction pattern}{290}
  27404. -\entry {\code {FIXUNS{\_}TRUNC{\_}LIKE{\_}FIX{\_}TRUNC}}{418}
  27405. -\entry {\code {fixuns{\_}trunc\var {mn}2} instruction pattern}{290}
  27406. -\entry {\code {fixuns\var {mn}2} instruction pattern}{290}
  27407. -\entry {flags in RTL expression}{225}
  27408. -\entry {\code {float}}{244}
  27409. -\entry {\code {float} as function value type}{182}
  27410. -\entry {\code {FLOAT{\_}ARG{\_}TYPE}}{378}
  27411. -\entry {\code {float{\_}extend}}{244}
  27412. -\entry {\code {FLOAT{\_}STORE{\_}FLAG{\_}VALUE}}{421}
  27413. -\entry {\code {float{\_}truncate}}{244}
  27414. -\entry {\code {FLOAT{\_}TYPE{\_}SIZE}}{338}
  27415. -\entry {\code {FLOAT{\_}VALUE{\_}TYPE}}{378}
  27416. -\entry {\code {FLOAT{\_}WORDS{\_}BIG{\_}ENDIAN}}{332}
  27417. -\entry {\code {FLOATIFY}}{378}
  27418. -\entry {floating point and cross compilation}{415}
  27419. -\entry {\code {float\var {mn}2} instruction pattern}{290}
  27420. -\entry {\code {floatuns\var {mn}2} instruction pattern}{290}
  27421. -\entry {\code {force{\_}reg}}{286}
  27422. -\entry {\code {format} function attribute}{140}
  27423. -\entry {forwarding calls}{125}
  27424. -\entry {frame layout}{353}
  27425. -\entry {\code {FRAME{\_}GROWS{\_}DOWNWARD}}{354}
  27426. -\entry {\code {FRAME{\_}GROWS{\_}DOWNWARD} and virtual registers}{235}
  27427. -\entry {\code {frame{\_}pointer{\_}needed}}{367}
  27428. -\entry {\code {FRAME{\_}POINTER{\_}REGNUM}}{355}
  27429. -\entry {\code {FRAME{\_}POINTER{\_}REGNUM} and virtual registers}{235}
  27430. -\entry {\code {FRAME{\_}POINTER{\_}REQUIRED}}{357}
  27431. -\entry {\code {frame{\_}pointer{\_}rtx}}{356}
  27432. -\entry {\code {fscanf}, and constant strings}{180}
  27433. -\entry {\code {ftrunc\var {m}2} instruction pattern}{290}
  27434. -\entry {function attributes}{138}
  27435. -\entry {function call conventions}{213}
  27436. -\entry {function entry and exit}{367}
  27437. -\entry {function pointers, arithmetic}{